在 winForms 中扩展 TreeNode 功能

本文关键字:TreeNode 功能 扩展 winForms | 更新日期: 2023-09-27 18:32:03

我的wform上有一个TreeView,它使用TreeNode的子类,其中包含一些我想针对每个节点存储的其他变量。 用户可以使用上下文菜单从我的树中删除节点。

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

澄清...

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

干杯

编辑:我实际上假设我必须这样做的方法是使用调用this的新方法扩展类。删除() 代替?

编辑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();
    } 
}

在 winForms 中扩展 TreeNode 功能

在你的子类中试试这个

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
}

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