用户控件的分层树中的事件

时间:2014-02-05 07:23:50

标签: c# user-controls tree

美好的一天。在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

还是有另一种方式吗?

2 个答案:

答案 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);

}