在winforms中扩展TreeNode功能

时间:2012-04-24 16:01:03

标签: c# winforms

我在winform上有一个TreeView,它使用TreeNode的子类和一些我希望存储在每个节点上的其他变量。用户可以使用上下文菜单从我的树中删除节点。

我希望能够做的是扩展TreeNode的Remove方法,以便在删除节点之前在那里进行一些额外的处理。有没有办法做到这一点?

澄清......

有没有办法扩展TreeNode的现有Remove方法,以便代码可以在实际执行删除之前执行?

干杯,

编辑:我实际上假设我必须这样做的方法是使用一个调用this.Remove()的新方法扩展类?

编辑2:这就是我最终要做的事情。这是最好的方式......

public partial class CustomTreeNode : TreeNode
{
    // My custom TreeNode vars
    public int UID;
    public int ParentUID;

    public CustomTreeNode(string nodeName) : base(nodeName)
    {
        // Set the tree node here
    }

    public void RemoveIt()
    {
        // Custom stuff
        System.Console.WriteLine("Deleted");

        base.Remove();
    } 

}

2 个答案:

答案 0 :(得分:1)

在您的子类中尝试此操作

public new void Remove() 
{ 
    //do your custom stuff

    base.Remove();  // calls the TreeNode Remove method
}

编辑:添加了新删除的覆盖

请注意,只要您将子类对象作为TreeNode引用,就不会调用自定义的Remove方法Difference between new and override

您还可以将此功能命名为:

public void SuperRemove() 
{ 
    //do your custom stuff

    base.Remove();  // calls the TreeNode Remove method
}

答案 1 :(得分:0)

您正在从上下文菜单中删除节点。为什么不向MenuItem_Click事件处理程序添加一些额外的处理?在调用Remove of node之前,你可以做任何事情。