Ajouter plusieurs noeuds à TreeView

Résolu
Erudix Messages postés 20 Date d'inscription jeudi 8 septembre 2011 Statut Membre Dernière intervention 30 juillet 2012 - 23 juil. 2012 à 19:06
Erudix Messages postés 20 Date d'inscription jeudi 8 septembre 2011 Statut Membre Dernière intervention 30 juillet 2012 - 24 juil. 2012 à 12:19
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+
A voir également:

19 réponses

Utilisateur anonyme
24 juil. 2012 à 12:04
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()
3
Erudix Messages postés 20 Date d'inscription jeudi 8 septembre 2011 Statut Membre Dernière intervention 30 juillet 2012 3
23 juil. 2012 à 19:08
lors du post du message, les espaces ont été supprimés.
Je redonne la hiérarchie :

-n1
----n2
------n3
---------n4
0
NHenry Messages postés 15134 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 juin 2024 159
23 juil. 2012 à 19:43
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
---
0
Erudix Messages postés 20 Date d'inscription jeudi 8 septembre 2011 Statut Membre Dernière intervention 30 juillet 2012 3
23 juil. 2012 à 19:52
Salut, cela créé qu'un seul enfant d'un niveau inférieur :
-n1
----n2
----n3
----n4
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15134 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 juin 2024 159
24 juil. 2012 à 00:12
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
---
0
Erudix Messages postés 20 Date d'inscription jeudi 8 septembre 2011 Statut Membre Dernière intervention 30 juillet 2012 3
24 juil. 2012 à 00:25
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.
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
24 juil. 2012 à 00:46
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.
0
Erudix Messages postés 20 Date d'inscription jeudi 8 septembre 2011 Statut Membre Dernière intervention 30 juillet 2012 3
24 juil. 2012 à 00:58
Bonsoir,

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


[] Ce qui va sans dire. va mieux en le disant.
0
Erudix Messages postés 20 Date d'inscription jeudi 8 septembre 2011 Statut Membre Dernière intervention 30 juillet 2012 3
24 juil. 2012 à 01:40
le .Net n'accepte pas autant de paramètres et il n'existe pas de Child
0
Utilisateur anonyme
24 juil. 2012 à 02:11
Bonjour,

Sélectionne le noeud désiré avant d'y ajouter des "sous-noeuds".
0
Erudix Messages postés 20 Date d'inscription jeudi 8 septembre 2011 Statut Membre Dernière intervention 30 juillet 2012 3
24 juil. 2012 à 02:16
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
0
Utilisateur anonyme
24 juil. 2012 à 02:52
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.
0
Utilisateur anonyme
24 juil. 2012 à 08:48
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)
0
Erudix Messages postés 20 Date d'inscription jeudi 8 septembre 2011 Statut Membre Dernière intervention 30 juillet 2012 3
24 juil. 2012 à 11:25
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 ?
0
Erudix Messages postés 20 Date d'inscription jeudi 8 septembre 2011 Statut Membre Dernière intervention 30 juillet 2012 3
24 juil. 2012 à 11:42
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)
0
Utilisateur anonyme
24 juil. 2012 à 11:47
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)
0
Erudix Messages postés 20 Date d'inscription jeudi 8 septembre 2011 Statut Membre Dernière intervention 30 juillet 2012 3
24 juil. 2012 à 11:58
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
0
Erudix Messages postés 20 Date d'inscription jeudi 8 septembre 2011 Statut Membre Dernière intervention 30 juillet 2012 3
24 juil. 2012 à 12:19
Merciii c'est nickel !
0
Rejoignez-nous