美好的一天。在C#中编程,我需要UserControls的分层树。我使用了以下内容:
public class MyControl : UserControl //my own control
{
this.MouseClick += new System.Windows.Forms.MouseEventHandler(SomeMethodForProcessing);
}
public class TreeNode<T> //universal tree data structure
{
List<TreeNode<T>> childs;
T data;
}
TreeNode<MyControl> tree; //using my tree
但我需要处理我的树取决于用户与我的控件的交互,例如,用户单击控件并删除具有此控件的TreeNode。请告诉我,我该怎么办?可能我必须使用这样的另一种方法:
public class MyControl : UserControl //my control and at the same time tree
{
List<MyControl> childs;
}
MyControl root; //using my tree
还是有另一种方式吗?
答案 0 :(得分:0)
如果我理解你的问题,这可能是一种方法:
public class YourNode : TreeNode
{
public Control Control { get; set; }
}
另一种方法是使用TreeNode-Class的Tag-Property。但我更喜欢第一种方法。
答案 1 :(得分:0)
每个树节点都有自己的事件,由树控件处理。例如,当您的鼠标在任何节点上运行时,MouseHover事件将在该树节点中执行,而不是直接在Tree控件中执行。因此,您必须在treenode中创建一个事件,然后您可以从此处理树控制事件。例如
private TreeNode_Click(object sender, EventArgs e)
{
If (MyControl.ItemClicked != null)
MyControl.ItemClicked(this, e);
}
<强>更新强>
此代码将以您的表单形式编写。该活动将添加到您的表单中。但是您必须在MyControl用户控件中声明了事件。
private MyControl_ItemClicked(object sender, EventArgs e)
{
if (sender != null)
this.Nodes.Remove((TreeNode)sender);
}