C# TreeNode Remove()不工作

C# TreeNode Remove()不工作,c#,winforms,tree,treeview,C#,Winforms,Tree,Treeview,长话短说: 我遍历一个泛型树,并根据过滤器将一些节点收集到一个列表中 完成遍历后,我开始逐个删除每个节点 删除收集的节点 foreach (TreeData nd in nodeBucket.Reverse<TreeData>()) { if (nd.node.Parent != null) { nd.node.Remove(); } } 不工作 TreeData结构如下所示: struct TreeData { public T

长话短说:

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

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

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

问题已修复:问题与重复节点有关(筛选是检查节点名称)。

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

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

你说的“不要被移除”是什么意思?它们是否保留在其父节点的节点集合中?它们在树视图中显示/可见,即使它们被删除后,它们的父引用将设置为null,并且父节点将没有对它们的引用。因此,您有遍历代码,您是否也可以使用该代码更新问题
While(node.Nodes.Count>0)
   node.Nodes[0].Remove();