Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在winforms中扩展TreeNode功能_C#_Winforms - Fatal编程技术网

C# 在winforms中扩展TreeNode功能

C# 在winforms中扩展TreeNode功能,c#,winforms,C#,Winforms,我在我的winform上有一个TreeView,它使用TreeNode的一个子类和一些额外的变量来存储每个节点。用户可以使用关联菜单从我的树中删除节点 我希望能够扩展TreeNode的Remove方法,以便在移除节点之前在其中执行一些额外的处理。有办法做到这一点吗 为了澄清 有没有一种方法可以扩展TreeNode的现有Remove方法,以便在实际执行Remove之前执行代码 干杯 编辑:我实际上假设我必须用一个调用this.Remove()的新方法来扩展这个类 编辑2:这就是我最后要做的。这是最

我在我的winform上有一个TreeView,它使用TreeNode的一个子类和一些额外的变量来存储每个节点。用户可以使用关联菜单从我的树中删除节点

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

为了澄清

有没有一种方法可以扩展TreeNode的现有Remove方法,以便在实际执行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();
    } 

}

在你的小班里试试这个

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

    base.Remove();  // calls the TreeNode Remove method
}
编辑:添加新的已删除覆盖

请注意,任何时候引用子类对象作为树节点时,都不会调用自定义的Remove方法

您还可以将函数命名为以下名称:

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

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

在你的小班里试试这个

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

    base.Remove();  // calls the TreeNode Remove method
}
编辑:添加新的已删除覆盖

请注意,任何时候引用子类对象作为树节点时,都不会调用自定义的Remove方法

您还可以将函数命名为以下名称:

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

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

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

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

尝试此操作时,我得到“无法覆盖继承的成员”System.Windows.Forms.TreeNode.Remove(),因为它未标记为virtual、abstract或override。尝试此操作时,我得到“无法覆盖继承的成员”System.Windows.Forms.TreeNode.Remove(),因为它未标记为virtual,抽象或重写。主要是因为此操作将在我的树中频繁发生,我希望对象本身能够处理从SQL中删除的操作,而无需为.Remove()的每个实例编写所有代码主要是因为此操作将在我的树中频繁发生,我希望对象本身能够处理它从SQL中的删除,而不必为.Remove()的每个实例编写所有代码