0

长话短说:

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

删除收集的节点

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; 
}

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

4

1 回答 1

0

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

While(node.Nodes.Count>0)
   node.Nodes[0].Remove();
于 2013-05-16T14:14:59.400 回答