[VB.NET] Treeview à partir d'un fichier texte

[Résolu]
Signaler
Messages postés
2
Date d'inscription
mardi 14 décembre 2004
Statut
Contributeur
Dernière intervention
5 décembre 2006
-
Messages postés
2
Date d'inscription
mardi 14 décembre 2004
Statut
Contributeur
Dernière intervention
5 décembre 2006
-
Bonjour à tous,


je galère sur un problème de treeview dont je n'arrive pas à trouver une solution simple et efficace.


J'ai un fichier texte de la forme :


1:Toto

1:titi

2:tata

2:tutu

3:blabla

2:bobo

1:keke

...


où le chiffre représente l'ordre hierarchique.

Je souhaite, à partir de ce fichier, générer un TreeView (.NET 2.0,
Winform) qui aura la tête suivante (par rapport à l'exemple ci dessus)


[] Toto

[] Titi

...[] tata

...[] tutu

......[] blabla

...[] bobo

[] keke


en sachant que j'ai x niveau de sous noeuds.


J'ai regardé des exemples sur le net qui tourne souvent autour du file
system, mais je n'ai pas trouvé de solution pour faire ce traitement.
Pas de pb pour la lecture du fichier texte, le split des valeurs,
etc... c'esg vraiment sur la construction du treeview que je sèche.


Des idées de pistes ?


merci d'avance!

2 réponses

Messages postés
24
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
15 septembre 2017

ça donnerait à peu près ceci :

AjouterUnNoeud(1, "Toto")
AjouterUnNoeud(1, "titi")
AjouterUnNoeud(2, "tata")
AjouterUnNoeud(2, "tutu")
AjouterUnNoeud(3, "blabla")
AjouterUnNoeud(2, "bobo")
AjouterUnNoeud(1, "keke")

Private Sub AjouterUnNoeud(ByVal pniveau As Integer, ByVal psTexte As String)   
    'noeud racine ou 1er appel : ajout à la suite à la racine !
    If pniveau <= 1 Or TreeView1.Nodes.Count <= 0 Then
        TreeView1.Nodes.Add(psTexte)
        Exit Sub
    End If

    Dim node As TreeNode
    'recup du dernier noeud racine ajouté
    node = TreeView1.Nodes(TreeView1.Nodes.Count - 1)
    'recup du dernier parent du niveau juste supérieur à celui à ajouter
    For i As Integer = 1 To pniveau - 2
        If node.Nodes.Count > 0 Then
        node = node.Nodes(node.Nodes.Count - 1)
        End If
    Next
    'ajout du nouveau noeud enfant
    node.Nodes.Add(psTexte)
End Sub

ça donne ça : (si l'image passe bien)

Note : la fonction est un peu "brute", reste à ajouter les tests, etc. ...
Messages postés
2
Date d'inscription
mardi 14 décembre 2004
Statut
Contributeur
Dernière intervention
5 décembre 2006

Merci beaucoup, c'est impec ! c'est bien sur l'index que je me cassais les dents.