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