分类目录

链接

2012年三月
« 2月   4月 »
 1234
567891011
12131415161718
19202122232425
262728293031  

近期文章

热门标签

博主推荐

现在位置:    首页 > .NET > 正文
ComboBoxTree实现
.NET 暂无评论 阅读(2,642)

ComboBoxTree

2009-03-24 11:32 128人阅读 评论(0) 收藏 举报

/*-----2009-03-28

* ----主要实现ComboBox框的下拉功能TreeView 功能

* 当TreeView的CheckBoxes属性为false时,当前选择的节点的Name 存储在ComboBox的Tag属性里

*/

using System.Data;

using System.Text;

using System.Windows.Forms;

using System.ComponentModel;

public class ComboBoxTree : ComboBox

{

/// <summary>

/// 定义鼠标左键点击消息

/// </summary>

private const int WM_LBUTTONDOWN = 0x201;

/// <summary>

/// 按下鼠标右键

/// </summary>

private const int WM_LBUTTONDBLCLK = 0x203;

//承载自定义控件

ToolStripControlHost treeViewHost;

ToolStripDropDown dropDown;

public ComboBoxTree()

{

TreeView treeView = new TreeView();

treeView.AfterSelect += new TreeViewEventHandler(treeView_AfterSelect);

treeView.BorderStyle = BorderStyle.None;

treeViewHost = new ToolStripControlHost(treeView);

dropDown = new ToolStripDropDown();

dropDown.Width = this.Width;

dropDown.Items.Add(treeViewHost);

}

public void treeView_AfterSelect(object sender, TreeViewEventArgs e)

{

if (TreeView.CheckBoxes)

{

string comboText = "";

foreach (TreeNode node in TreeView.Nodes)

{

if (node.Checked)

{

comboText += node.Text+",";

}

}

if (comboText != "")

{

comboText = comboText.Substring(0, comboText.Length - 1);

}

this.Text= comboText;

}

else

{

this.Text = TreeView.SelectedNode.Text;

this.Tag = TreeView.SelectedNode.Name;

}

dropDown.Close();

}

public TreeView TreeView

{

get { return treeViewHost.Control as TreeView; }

}

private void ShowDropDown()

{

if (dropDown != null)

{

treeViewHost.Size = new System.Drawing.Size(DropDownWidth - 2, DropDownHeight);

dropDown.Show(this, 0, this.Height);

}

}

//处理windows消息

protected override void WndProc(ref Message m)

{

if (m.Msg == WM_LBUTTONDBLCLK || m.Msg == WM_LBUTTONDOWN)

{

ShowDropDown();

return;

}

base.WndProc(ref m);

}

protected override void Dispose(bool disposing)

{

if (disposing)

{

if (dropDown != null)

{

dropDown.Dispose();

dropDown = null;

}

}

base.Dispose(disposing);

}

}

通过ComboBoxTree - 刘跃飞的专栏 - 博客频道 - CSDN.NET.

本文版权归数据库之家所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:ComboBoxTree实现 | 数据库之家

发表评论

留言无头像?