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

Résolu
Pilosite Messages postés 2 Date d'inscription mardi 14 décembre 2004 Statut Contributeur Dernière intervention 5 décembre 2006 - 5 déc. 2006 à 10:33
Pilosite Messages postés 2 Date d'inscription mardi 14 décembre 2004 Statut Contributeur Dernière intervention 5 décembre 2006 - 5 déc. 2006 à 14:20
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

nbaduraux Messages postés 24 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 15 septembre 2017
5 déc. 2006 à 14:01
ç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. ...
3
Pilosite Messages postés 2 Date d'inscription mardi 14 décembre 2004 Statut Contributeur Dernière intervention 5 décembre 2006
5 déc. 2006 à 14:20
Merci beaucoup, c'est impec ! c'est bien sur l'index que je me cassais les dents.
0
Rejoignez-nous