1

我的 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();
    } 

}
4

2 回答 2

1

在你的子类中试试这个

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

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

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

请注意,每当您将子类对象引用为 TreeNode 时,您的自定义 Remove 方法将不会被调用 new 和 override 之间的区别

您还可以将函数命名为其他名称,如下所示:

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

    base.Remove();  // calls the TreeNode Remove method
}
于 2012-04-24T16:07:17.603 回答
0

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

于 2012-04-24T16:47:21.787 回答