在 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();
}
}
在你的子类中试试这个
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?在调用删除节点之前,您可以在那里执行任何操作。