只要在树视图中添加新节点,就创建一个事件处理程序

时间:2009-01-22 13:18:02

标签: c# asp.net

我想写一个自定义类,每当我向treeview添加一个节点时,它应该调用一个事件。这样我就可以递归地运行它。

2 个答案:

答案 0 :(得分:1)

我很少使用TreeView,但一眼就看出这是我的第一印象。由于无法继承TreeViewCollection,您可能必须在新类上创建一个单独的方法,该方法将执行实际添加到Nodes集合。这将使您能够参加比赛。在你继承的类中有这样的东西:

public event EventHandler NodeAdded;

public void AddNode(TreeViewNode node)
{
    Nodes.Add(node);
    if (NodeAdded != null)
    {
        NodeAdded(this, EventArgs.Empty);
    }
}

然后,您可以创建一个自定义的EventArgs类,并包含您可能想要使用的任何信息。

答案 1 :(得分:1)

不幸的是,由于TreeNodeCollection实际上是一棵树,我认为你将需要实际上从头开始实现自己的树视图控件,使用带有事件的自定义树数据结构,或找到第三方或开源使用。

如果它是一个简单的集合,我会说只是将一个框架TreeView控件包装在一个自定义用户控件中,并隐藏Nodes属性,只显示你想要的访问器和mutator。然后,您可以在将调用传递给基础TreeView控件之前和/或之后触发控件的事件。但是,这只会在第一层节点上为您提供事件。

使用mutator事件制作List或Dictionary类很容易,因为你可以像这样包装它们。但树木是必须实施的王室痛苦,特别是如果你要分发或出售使用它的代码。不幸的是,我们从.NET框架中获得的帮助基本上没有。由于实现树结构的所有复杂性,我强烈建议尝试找到预先制定的解决方案,无论是第三方还是开源。