Ajouter plusieurs noeuds à TreeView [Résolu]

Erudix 20 Messages postés jeudi 8 septembre 2011Date d'inscription 30 juillet 2012 Dernière intervention - 23 juil. 2012 à 19:06 - Dernière réponse : Erudix 20 Messages postés jeudi 8 septembre 2011Date d'inscription 30 juillet 2012 Dernière intervention
- 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+
Afficher la suite 

19 réponses

Répondre au sujet
Utilisateur anonyme - 24 juil. 2012 à 12:04
+3
Utile
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()
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Utilisateur anonyme
Erudix 20 Messages postés jeudi 8 septembre 2011Date d'inscription 30 juillet 2012 Dernière intervention - 23 juil. 2012 à 19:08
0
Utile
lors du post du message, les espaces ont été supprimés.
Je redonne la hiérarchie :

-n1
----n2
------n3
---------n4
Commenter la réponse de Erudix
NHenry 14129 Messages postés vendredi 14 mars 2003Date d'inscription 19 avril 2018 Dernière intervention - 23 juil. 2012 à 19:43
0
Utile
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
---
Commenter la réponse de NHenry
Erudix 20 Messages postés jeudi 8 septembre 2011Date d'inscription 30 juillet 2012 Dernière intervention - 23 juil. 2012 à 19:52
0
Utile
Salut, cela créé qu'un seul enfant d'un niveau inférieur :
-n1
----n2
----n3
----n4
Commenter la réponse de Erudix
NHenry 14129 Messages postés vendredi 14 mars 2003Date d'inscription 19 avril 2018 Dernière intervention - 24 juil. 2012 à 00:12
0
Utile
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
---
Commenter la réponse de NHenry
Erudix 20 Messages postés jeudi 8 septembre 2011Date d'inscription 30 juillet 2012 Dernière intervention - 24 juil. 2012 à 00:25
0
Utile
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.
Commenter la réponse de Erudix
LIBRE_MAX 1403 Messages postés mardi 1 mai 2007Date d'inscription 7 octobre 2012 Dernière intervention - 24 juil. 2012 à 00:46
0
Utile
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.
Commenter la réponse de LIBRE_MAX
Erudix 20 Messages postés jeudi 8 septembre 2011Date d'inscription 30 juillet 2012 Dernière intervention - 24 juil. 2012 à 00:58
0
Utile
Bonsoir,

Ton code n'est malheureusement pas convertible en .Net ...
Commenter la réponse de Erudix
LIBRE_MAX 1403 Messages postés mardi 1 mai 2007Date d'inscription 7 octobre 2012 Dernière intervention - 24 juil. 2012 à 01:09
0
Utile
et ça bloque à quel niveau ?


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

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.