长话短说:
- 我遍历一个通用树并根据过滤器将一些节点收集到一个列表中
- 完成遍历后,我开始一个一个地删除每个节点
删除收集的节点
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;
}
问题已修复:问题与重复节点有关(过滤正在检查节点名称)。