您的位置:首页 > 运维架构

不显示删除回复显示所有回复显示星级回复显示得分回复 ComboBox和Treeview绑定后设置成DropDownList后无法获取值

2009-08-01 15:58 531 查看
将TreeView控件绑定到ComboBox控件后,设置控件的DropDownStyle为默认的DropDown,然后选择TreeView节点后,节点文本能够显示在ComboBox中,但是如果DropDownStyle为DropDownList,则选择TreeView节点后,节点文本不会显示在ComboBox中,不知道代码还缺少什么。我的代码和运行结果如下:

using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Drawing;

namespace ComboBoxTreeViewControl
{
public class ComboBoxTreeView : ComboBox
{
private const int WM_LBUTTONDOWN = 0x201, WM_LBUTTONDBLCLK = 0x203;
ToolStripControlHost treeViewHost;
ToolStripDropDown dropDown;
public ComboBoxTreeView()
{
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)
{
this.Text = TreeView.SelectedNode.Text;
dropDown.Close();
}
public TreeView TreeView
{
get { return treeViewHost.Control as TreeView; }
}
private void ShowDropDown()
{
if (dropDown != null)
{
treeViewHost.Size = new Size(DropDownWidth - 2, DropDownHeight);
dropDown.Show(this, 0, this.Height);
}
}
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 (treeViewHost != null)
{
treeViewHost.Dispose();
treeViewHost = null;
}

if (dropDown != null)
{
dropDown.Dispose();
dropDown = null;
}
}
base.Dispose(disposing);
}
}
}













内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐