Ajouter plusieurs noeuds à TreeView [Résolu]

Signaler
Messages postés
20
Date d'inscription
jeudi 8 septembre 2011
Statut
Membre
Dernière intervention
30 juillet 2012
-
Messages postés
20
Date d'inscription
jeudi 8 septembre 2011
Statut
Membre
Dernière intervention
30 juillet 2012
-
Bonjour,

Après d'innombrables recherches à ce sujet en vain, je dépose ici mon problème non résolu.

J'ai un TreeView et j'ai besoin d'y ajouter dynamiquement des noeuds enfants descendants, la hiérarchie est :
- n1
-n2
-n3
-n4

VS donne aucun paramètre pour y parvenir avez-vous une fonction pour cela ?

A+

19 réponses


dans ce cas, ce serait plutôt comme ceci :
        dim pre as treenode = TreeView1.Nodes.Add(a(j))
        Dim count As Integer
        For j = 0 To a.GetUpperBound(0)
            count += 1
            if not count =1 then pre = pre.Nodes.Add(a(j))
        Next
        TreeView1.ExpandAll()
Messages postés
20
Date d'inscription
jeudi 8 septembre 2011
Statut
Membre
Dernière intervention
30 juillet 2012
2
lors du post du message, les espaces ont été supprimés.
Je redonne la hiérarchie :

-n1
----n2
------n3
---------n4
Messages postés
14675
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2020
143
Bonjour,

MonNeud.Nodes.Add, ne marche pas ?
J'ai juste regardé dans MSDN.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Messages postés
20
Date d'inscription
jeudi 8 septembre 2011
Statut
Membre
Dernière intervention
30 juillet 2012
2
Salut, cela créé qu'un seul enfant d'un niveau inférieur :
-n1
----n2
----n3
----n4
Messages postés
14675
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2020
143
Bonjour,

Ben, as-tu essayé en réutilisant le node créé ?
Sinon, quel code as-tu testé ?
Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Messages postés
20
Date d'inscription
jeudi 8 septembre 2011
Statut
Membre
Dernière intervention
30 juillet 2012
2
J'ai cherché depuis ce matin, je suis tombé sur des dizaines de codes.

Ben, as-tu essayé en réutilisant le node créé ?

Probablement.

Je crois avoir une piste en utilisant la méthode Insert ou en utilisant la même construction que ces deux fonctions.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Bonsoir,

'code vb6
Dim NodX As Node
    
  With TreeView1
        'noeud parent 
        Set NodX = .Nodes.Add(, , , "n1")

        'noeuds childs
        .Nodes.Add NodX, tvwChild, , "n2"
        .Nodes.Add NodX, tvwChild, , "n3"
        .Nodes.Add NodX, tvwChild, , "n4"  
End With




[] Ce qui va sans dire. va mieux en le disant.
Messages postés
20
Date d'inscription
jeudi 8 septembre 2011
Statut
Membre
Dernière intervention
30 juillet 2012
2
Bonsoir,

Ton code n'est malheureusement pas convertible en .Net ...
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
et ça bloque à quel niveau ?


[] Ce qui va sans dire. va mieux en le disant.
Messages postés
20
Date d'inscription
jeudi 8 septembre 2011
Statut
Membre
Dernière intervention
30 juillet 2012
2
le .Net n'accepte pas autant de paramètres et il n'existe pas de Child

Bonjour,

Sélectionne le noeud désiré avant d'y ajouter des "sous-noeuds".
Messages postés
20
Date d'inscription
jeudi 8 septembre 2011
Statut
Membre
Dernière intervention
30 juillet 2012
2
Merci de te joindre à la discussion.
SelectedNode fonctionne avec la sélection d'un noeud dans le contrôle ce qui n'est pas voulu

Bonjour,

Si tu parles du déclenchement (nuisible) de l'événement, et de la procédure qui vient avec; j'ai une technique un peu beaucoup personnelle pour augmenter un peu le contrôle sur ces affaires-là qui peuvent compliquer la vie sérieusement.

Je me mets une sorte de garde-fou genre :

dim OublieLÉvenement as boolean = true


au début de la section où le déclenchement d'un événement en particulier cause des dommages collatéraux

Dans la procédure de l'évenement, je mets quelque chose du genre:
sub evenement etc.
    if OublieLÉvenement = false then
        le reste de la procédure
    end if
end sub


Au moment propice je mets

OublieLÉvenement = false 


C'est un peu (beaucoup) du bricolage, mais la fin justifie les moyens.

Bonjour,

Il se trouve que Add est une fonction et pas une méthode, donc elle renvoie un TreeNode qui servira lui même de parent pour ses enfants.
Dim tv As New TreeView
Dim root As TreeNode = tv.Nodes.Add("n1")
Dim sousnoeud1 As TreeNode = root.Nodes.Add("n2")
Dim sousnoeud2 As TreeNode = sousnoeud1.Nodes.Add("n3")
'ainsi de suite...
root.Nodes.Add("n1_1")
'...
tv.ExpandAll()
Me.Controls.Add(tv)
Messages postés
20
Date d'inscription
jeudi 8 septembre 2011
Statut
Membre
Dernière intervention
30 juillet 2012
2
Merci banana32 enfin un code qui fonctionne !
            Dim root As TreeNode = TreeView1.Nodes.Add(a(j))
            Dim pre As TreeNode = Le dernier node

            Dim count As Integer
            For j = 0 To a.GetUpperBound(0)
                count += 1
                If Not count = 1 Then pre.Nodes.Add(a(j))
            Next

            TreeView1.ExpandAll()

La génération des nodes est dynamique, ce code fonctionnerait si il était possible de connaitre le dernier node créé (variable "pre"). T'as une suggest ?
Messages postés
20
Date d'inscription
jeudi 8 septembre 2011
Statut
Membre
Dernière intervention
30 juillet 2012
2
J'ai essayé ceci mais le comptage se fait qu'au premier niveau, ca ne descend pas voir les noeuds enfants.
Dim pre As TreeNode = TreeView1.Nodes(TreeView1.Nodes.Count - 1)

Ta question n'est pas claire.
Le dernier node créé dynamiquement est renvoyé par la fonction Add.
Par exemple, dans ton code juste au dessus, 'root' est le dernier noeud créé.
C'est donc lui qui deviendra parent :
If Not count = 1 Then root.Nodes.Add(a(j))

S'il s'agit de connaître le dernier noeud (et non pas créé en dernier) du treeview, alors on l'obtient de cette façon :
Dim derniernoeud As TreeNode = tv.Nodes.Item(tv.Nodes.Count - 1)
Messages postés
20
Date d'inscription
jeudi 8 septembre 2011
Statut
Membre
Dernière intervention
30 juillet 2012
2
Oui, le mot dynamique est ambigu, c'est que le dernier noeud est toujours celui créé en dernier dans mon code.
            TreeView1.Nodes.Add(a(j))

            Dim count As Integer
            For j = 0 To a.GetUpperBound(0)
                count += 1
                Dim pre As TreeNode = TreeView1.Nodes.Item(TreeView1.Nodes.Count - 1)
                If Not count = 1 Then pre.Nodes.Add(a(j))
            Next

            TreeView1.ExpandAll()

Cela ne fonctionne pas, la hiérarchie est
-n1
----n2
----n3
----n4
Messages postés
20
Date d'inscription
jeudi 8 septembre 2011
Statut
Membre
Dernière intervention
30 juillet 2012
2
Merciii c'est nickel !