2011-04-27 6 views
0

사용자가 편집 할 수없는 Treeview가 있습니다. 새로 고치려고하는 방법은 전체 트리를 지우고 모든 노드 (및 하위)를 다시 추가하는 것입니다. 나는 다음 코드 줄하여이를 달성 해요 : 내가 addAllNodes를 호출하기 전에 업데이트 및 새로 고침 방법을 추가하는 시도했지만 차이를 만들어하지 않은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 

. 위 이렇게하면 나에게 오류 가져옵니다

System.ArgumentException: Cannot add or insert the item 'NodeNameHere' in more than one place. You must first remove it from its current location or clone it

내 첫 번째 질문은, 나는이 오류가 발생하는 일을하고 무엇을하고 어떻게 제대로 내 나무를 새로 고칠 수 있습니까?

내 두 번째 질문은 새로 고침 후에 사용자의 확장 노드를 복원 할 수있는 방법이 있습니까? (모든 것이 붕괴되지 않도록)

+0

두 번째 질문이가는 한, 내가 트리 뷰를 지우기 전에 노드를 반복하고 노드가 확장되면 목록에 노드를 추가합니다. 그런 다음 노드를 지우고 다시 추가하고 목록에있는 노드를 확장하여 목록을 반복합니다. – seekerOfKnowledge

+0

내가 잘못 접근하고있었습니다. 나는 계속 진행할 필요가있는 아이들 만 앞섰다. 모든 정적 노드 (addAllNodes()에서 추가됨)는 손댈 필요가 전혀 없습니다. 여전히 모든 확장 된 노드를 기억하는 방법을 원합니다. – Demasterpl

+0

@ John Arlen - 예, 한 번에 디버그 라인을 살펴보고 트리가 지워졌습니다. – Demasterpl

답변

0

각 노드에는 .Path 또는 .FullPath와 같은 경로가 있으며 현재 VS를 열지 않습니다. 따라서 노드를 지우고 모든 확장 된 노드를 기록한 다음 새로 고친 후 다시 걸어서 노드의 경로가 저장된 노드와 일치하는지 확인하십시오.

관련 문제