TreeView Обновить Вопросы - PullRequest
       12

TreeView Обновить Вопросы

0 голосов
/ 27 апреля 2011

У меня есть вид дерева, который пользователь не может редактировать.Способ, которым я пытаюсь обновить, - это очистить все дерево и заново добавить все узлы (и дочерние элементы).Я выполняю это с помощью следующих строк кода:

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

Я пытался добавить метод Update и Refresh перед вызовом addAllNodes, но ничего не изменил.Выполнение вышеизложенного приводит меня к ошибке:

System.ArgumentException: невозможно добавить или вставить элемент 'NodeNameHere' в более чем одном месте.Сначала вы должны удалить его из его текущего местоположения или клонировать

Мой первый вопрос: что я делаю, чтобы вызвать эту ошибку и как правильно обновить дерево?

МойВторой вопрос: после обновления есть ли способ восстановить расширенные узлы пользователя?(чтобы не все рухнуло)

1 Ответ

0 голосов
/ 28 апреля 2011

каждый узел имеет путь (называемый чем-то вроде .Path или .FullPath; не имеет VS, открытый прямо сейчас).Таким образом, вы можете пройтись по своим узлам, прежде чем очистить их и записать все развернутые узлы, а затем пройти их снова после обновления и посмотреть, соответствует ли путь узла сохраненному. Если это так, разверните его.

...