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();