2010-09-13 4 views
0

J'ai une classe, appelons MyClass. Dans cette classe, j'ai une propriété TreeView appelons myTreeView Dans mon code, je remplis les nœuds de ce TreeView afin que je puisse l'utiliser plus tard. Puis, quand il est temps de l'utiliser, je n'ai pas été en mesure de prendre tous les nœuds de myClass et de les placer dans un Tree View Control sur mon formulaire.Remplissage d'une TreeView à partir d'une instance TreeView

J'ai essayé deux choses:

1.

aTreeView=MyClass.myTreeView 

qui revient tout simplement rien (TreeView est vide)

2.

For Each newNode As TreeNode In MyClass.myTreeView.Nodes 
     aTreeView.Nodes.Add(newNode) 
    Next 

Je reçois le même résultat ici ... un TreeView vide

La chose étrange est que lors du débogage, le TreeView dans MyClass est bien peuplé avec les bonnes valeurs et dans la boucle, newNode n'est pas vide, il y a quelque chose, mais pour une raison quelconque, il ne montre rien.

Toute aide serait appréciée,

Merci

Répondre

2

Le premier extrait ne peut pas travailler parce aTreeView est une référence à la TreeView qui est stocké dans la collection de contrôles du formulaire. L'affectation change juste la référence, elle ne change pas l'arborescence réelle que l'utilisateur regarde.

Le deuxième extrait est défectueux car un TreeNode a un propriétaire. Le TreeView. Le code videra TreeView dans votre classe. Les nœuds déplacés peuvent ne pas être visibles car vous avez utilisé la mauvaise référence, la mauvaise instance de formulaire possible. Assurez-vous d'utiliser celui que l'utilisateur regarde. Vous devez utiliser la méthode TreeNode.Clone() pour créer une copie du nœud.

+0

Fonctionne très bien ... thx Je vais ajouter le code – Iggy

1

Merci à la réponse de Hans Passant, voici comment le faire fonctionner ...

For Each newNode As TreeNode In MyClass.myTreeView.Nodes 
    Dim cloneNode as new TreeNode 
    cloneNode=newNode.Clone() 
    aTreeView.Nodes.Add(cloneNode) 
Next