我有一个名为treeView1的TreeView
的简单表单,我喜欢在HandleCreated
处理程序中添加一些节点,如下所示:
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
treeView1.CheckBoxes = true;
treeView1.HandleCreated += delegate
{
// Add one and only one node
treeView1.Nodes.Add(new TreeNode("A Node"));
};
}
}
}
运行此表单时,实际上有两个节点可见!当我单击第二个节点上的复选框时,将选中/取消选中第一个节点。
有人知道防止这种“幽灵节点”的方法吗?
我想在HandleCreated
中添加节点的原因是,此处理程序用于线程函数,该函数实际构建要添加的节点的数据结构。稍后添加节点意味着我必须重写我的很多代码。
答案 0 :(得分:1)
这太奇怪了!看起来像是一个错误...你应该将它报告给connect网站。
如果你真的想要挂钩句柄创建的一个解决方案是从TreeView派生,就像这样,并使用这个类而不是标准的TreeView:
public class MyTreeView : TreeView
{
protected override void OnHandleCreated(EventArgs e)
{
base.OnHandleCreated(e);
Nodes.Add(new TreeNode("A Node"));
}
}