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:问题与重复节点有关(过滤正在检查节点名称)。
如果您想保留当前节点,但只需要删除子节点
While(node.Nodes.Count>0)
node.Nodes[0].Remove();