TreeNode Remove()不起作用

本文关键字:不起作用 Remove TreeNode | 更新日期: 2023-09-27 18:13:49

长话短说:

  • 我遍历一个通用树,并根据过滤器
  • 收集一些节点到列表中
  • 在完成遍历后,我开始逐个删除每个节点

删除收集到的节点

foreach (TreeData nd in nodeBucket.Reverse<TreeData>())
{
    if (nd.node.Parent != null)
    {
        nd.node.Remove();
    }
}

树大约有2000个节点。不知何故,当所有节点都应该被删除时,有几个节点没有被删除,Remove()被调用,它们的父后记为空。未被删除的节点总是相同的。

也试过node.Parent.Nodes.Remove(node),没有运气。

tree.BeginUpdate();
tree.EndUpdate();
tree.Invalidate();
tree.Refresh();
tree.Update();

不工作。

TreeData结构是这样的:

struct TreeData
{
    public TreeData( TreeNode node) 
    {
        this.node   = node;
        this.parent = node.Parent;
        this.level  = node.Level;
    }
    public TreeNode node;
    public TreeNode parent;
    public int level; 
}

Issue fixed:问题与重复节点有关(过滤正在检查节点名称)。

TreeNode Remove()不起作用

如果您想保留当前节点,但只需要删除子节点

While(node.Nodes.Count>0)
   node.Nodes[0].Remove();