Bonjour tout le monde.
Voilà, je cherche a récupérer la racine d'une hiérarchie de Treeview lorsque je doubleclick sur un noeud de mon tree.
Pour ce faire, je me suis abonné à l'évènement NodeMouseDoubleClick de mon Treeview.
Ensuite, dans le code, je vais rechercher l'élément sur lequel je viens de clicker, et je souhaite récupérer sa racine, c'est à dire le premier noeud de sa hiérarchie.
Pour ce faire, j'ai créé une méthode récursive BacktoRoot à laquelle je passe le noeud courant ( dans mon cas le noeud sélectionné), et je refait appel à BacktoRoot tant qu'il y a un noeud parent. Voici le code de ma méthode:
Je fais appel à cette méthode de la manière suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 private TreeNode BacktoRoot(TreeNode e) { if (e.Parent != null) { MessageBox.Show("parent node : \n" + e.Parent.Text); BacktoRoot(e.Parent); return null; } else { MessageBox.Show("root: \n" + e.Text); return e; } }
Une fois l'appel de la méthode terminer, donc quand je n'aurais plus de parent pour mon noeud, je souhaite simplement afficher le noeud racine de ma hoérarchie dans le code de traitement de l'évènement. Pour ce faire, je procède comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 TreeNode racine = new TreeNode(); racine = BacktoRoot(e.Node);
Et la surprise, il me dit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MessageBox.Show("Racine du noeud selectionné: \n" + racine.Text);
Je ne sais pas pourquoi il me dit ça, car quand j'affiche mes MessageBox dans la méthode récursive, il me donne la bonne valeur pour la racine.La référence d'objet n'est pas définie à une instance d'un objet.
Quelqu'un parmi vous aurait-il une idée d'où pourrait provenir mon erreur. Aurais-je oublier quelque chose de super important?
Je ne vois vraiment pas quoi
Je vous remercie, une fois encore, d'avance pour l'aide que vous pourrez m'apporter.
Partager