Treeview刷新问题

时间:2011-04-27 18:06:05

标签: c# treeview refresh

我有一个用户无法编辑的Treeview。我正在尝试刷新的方式是清除整个树并重新添加所有节点(和子节点)。我正在通过以下代码行完成此任务:

treeView.BeginUpdate(); //Freeze drawing
treeView.Nodes.Clear(); //Empty Tree
addAllNodes();  //This adds the nodes for the tree and sets their name/text property
treeView.EndUpdate(); //Unfreeze drawing

我尝试在调用addAllNodes之前添加Update和Refresh方法,但没有区别。执行上述操作会出错:

  

System.ArgumentException:无法在多个位置添加或插入项“NodeNameHere”。您必须先将其从当前位置删除或克隆它

我的第一个问题是,我在做什么导致此错误以及如何正确刷新我的树?

我的第二个问题是,刷新后有什么办法可以恢复用户的扩展节点吗? (这样一切都不会崩溃)

1 个答案:

答案 0 :(得分:0)

每个节点都有一个路径(称为类似.Path或.FullPath;现在没有VS打开)。因此,您可以在清除它们之前遍历节点并记录所有展开的节点,然后在刷新后再次遍历它们并查看节点的路径是否与存储的路径匹配..如果是,则展开它。

相关问题