我在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();
}
}
答案 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之前,你可以做任何事情。