OVH Cloud OVH Cloud

Problèmes Treeview

2 réponses
Avatar
Jack06
Bonjour,
je suis en train de m'arracher les cheveux avec le controle Treeview (VB
2005). Voila mon problème :
J'ai créé par code une série de noeuds parents. Chacun de ces noeuds
possède un ou plusieurs sous-noeuds. Bien. Lors de la création des
noeuds, j'ai utilisé la formule treeview.Nodes.Add(sKey, sName) pour
pouvoir attribuer à chacun une clé (à ce propos, il y a quelque chose
que je n'ai pas compris : on peut créer une clé pour chaque noeud, mais
il n'existe aucune propriété "Key" pour y faire référence !!).

Maintenant, comment faire pour ajouter des noeuds enfants à un des
sous-noeuds existant. J'ai essayé :

treeview.Nodes(sKey).Nodes.Add(sNewKey, sNewName)

mais une erreur me signale : "NullReference Exception ! La référence
d'objet n'est pas définie à une instance d'un objet."

Effectivement treeview.Nodes(sKey) vaut Nothing. Oui, mais pourquoi ?
Autrement dit, comment ajouter des noeuds à partir d'un noeud/sous-noeud
existant précis, sans le sélectionner ?

J'espère avoir été clair.
Merci de votre aide.

Jacques

2 réponses

Avatar
Cyril P.
bonjour,

Si sKey est la clé d'un des noeuds de premier niveau dans ton arbre alors
treeview.Nodes(sKey).Nodes.Add(sNewKey, sNewName) va fonctionner. Par contre,
si c'est la clé d'un sous-noeud, c'est à dire d'un noeud de second niveau, tu
dois y accéder en respectant ta hierarchie de noeuds. Tu dois donc connaitre
la clé du noeud de premier niveau (et par conséquent l'ensmeble du chemin
d'accès) pour ajouter un sous-noeud. Exemple avec l'ajout d'un noeud de
troisieme niveau :
treeview.Nodes(sKey1).Nodes(sKey2).Nodes.Add(sNewKey, sNewName).
Il est donc necessaire de connaître ton arborescence et de retrouver le
chemin tout seul pour ajouter un noeud de cette manière, ou de se servir des
fonctions de recherche du treeview pour retrouver le noeud cible de l'ajout
(bon, moi aussi j'éspère être clair, c'est pas évident à éxpliquer hein :)).

Bon courage, Cordialement,
--
Cyril PINEAU
.Net Technical analyst
CNPPF France


"Jack06" wrote:

Bonjour,
je suis en train de m'arracher les cheveux avec le controle Treeview (VB
2005). Voila mon problème :
J'ai créé par code une série de noeuds parents. Chacun de ces noeuds
possède un ou plusieurs sous-noeuds. Bien. Lors de la création des
noeuds, j'ai utilisé la formule treeview.Nodes.Add(sKey, sName) pour
pouvoir attribuer à chacun une clé (à ce propos, il y a quelque chose
que je n'ai pas compris : on peut créer une clé pour chaque noeud, mais
il n'existe aucune propriété "Key" pour y faire référence !!).

Maintenant, comment faire pour ajouter des noeuds enfants à un des
sous-noeuds existant. J'ai essayé :

treeview.Nodes(sKey).Nodes.Add(sNewKey, sNewName)

mais une erreur me signale : "NullReference Exception ! La référence
d'objet n'est pas définie à une instance d'un objet."

Effectivement treeview.Nodes(sKey) vaut Nothing. Oui, mais pourquoi ?
Autrement dit, comment ajouter des noeuds à partir d'un noeud/sous-noeud
existant précis, sans le sélectionner ?

J'espère avoir été clair.
Merci de votre aide.

Jacques



Avatar
Jack06
Ok.Pas de soucis, tes explications sont très claires, je vais tester.
Merci de ton aide.

Jacques



Cyril P. a écrit :
bonjour,

Si sKey est la clé d'un des noeuds de premier niveau dans ton arbre alors
treeview.Nodes(sKey).Nodes.Add(sNewKey, sNewName) va fonctionner. Par contre,
si c'est la clé d'un sous-noeud, c'est à dire d'un noeud de second niveau, tu
dois y accéder en respectant ta hierarchie de noeuds. Tu dois donc connaitre
la clé du noeud de premier niveau (et par conséquent l'ensmeble du chemin
d'accès) pour ajouter un sous-noeud. Exemple avec l'ajout d'un noeud de
troisieme niveau :
treeview.Nodes(sKey1).Nodes(sKey2).Nodes.Add(sNewKey, sNewName).
Il est donc necessaire de connaître ton arborescence et de retrouver le
chemin tout seul pour ajouter un noeud de cette manière, ou de se servir des
fonctions de recherche du treeview pour retrouver le noeud cible de l'ajout
(bon, moi aussi j'éspère être clair, c'est pas évident à éxpliquer hein :)).

Bon courage, Cordialement,