[VB2005 ]Parcourir tous les noeuds d'un treeview [Résolu]

cs_EXCLUSIF 59 Messages postés mercredi 5 février 2003Date d'inscription 9 août 2007 Dernière intervention - 28 juil. 2007 à 14:19 - Dernière réponse : cs_halbi 17 Messages postés mardi 9 octobre 2007Date d'inscription 30 janvier 2013 Dernière intervention
- 11 août 2008 à 09:38
Bonjour à tous,

Comment faire pour parcourir l'ensemble des noeuds d'un treeview afin de récupérer la propriété Tag de chacun d'entre eux ?

Merci et bon week-end

Ludo
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 28 juil. 2007 à 20:50
3
Merci
Peut-etre quelque chose du genre :

        'Pour chaque noeud parent du treeview
        For Each toto As TreeNode In TreeView1.Nodes
            'Pour chaque noeud enfant du noeud parent
            For Each titi As TreeNode In toto.Nodes
                ...................
            Next
        Next

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   

Merci cs_casy 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de cs_casy
stankov 8 Messages postés lundi 6 décembre 2004Date d'inscription 21 novembre 2008 Dernière intervention - 22 avril 2008 à 14:49
1
Merci
L'idée proposée par Casy est bonne, mais si à chaque fois qu'il y a un nouveau niveau à ajouter tu auras besoin de modifier ton code;

Si tu veux limiter (expressement) la parcours de 3 niveaux, va pour ton algorithme. mais si le nombre de niveau est indeterminé, alors tu as besoin de faire une fonction recursive qui va parcourir tous les noeuds.
C'est un algo complexe, mais quand il marche, et bien l'utilise dans presque TOUS les cas de figures liés au parcours d'un Treeview
Commenter la réponse de stankov
cs_EXCLUSIF 59 Messages postés mercredi 5 février 2003Date d'inscription 9 août 2007 Dernière intervention - 28 juil. 2007 à 22:36
0
Merci
Merci beaucoup Casy j'ai dû rajouter un niveau de plus car je voulais atteindre le 3ème niveau de mon treeview mais ça marche à merveille.
Commenter la réponse de cs_EXCLUSIF
cs_halbi 17 Messages postés mardi 9 octobre 2007Date d'inscription 30 janvier 2013 Dernière intervention - 19 mai 2008 à 14:50
0
Merci
Bonjour tout le monde
Justement j'ai ce cas de figure à étudier en ce moment,
j'essaie de lister le contenu d'un dossier ftp distant dans un treeview,
j'ai une fonction recursive qui me liste les noeuds lorsqu'un "/" est detecté et qui en fonction de cela m'ajoute un noeud "enfant".
Le soucis est que les noeuds enfants ne sont pas attribués aux bons parents, je retrouve même parfois plusieurs fois le même enfants dans des parents différents
le vrai bordel quoi ^^
si une âme charitable veut bien me donner un exemple de code, ça m'aiderait beaucoup
merci
ps : je suis en info de gestion fin de 1ere année excusez ma nullité
Commenter la réponse de cs_halbi
stankov 8 Messages postés lundi 6 décembre 2004Date d'inscription 21 novembre 2008 Dernière intervention - 27 mai 2008 à 11:59
0
Merci
salut Halbi.
Je voudrais voir le bout de code à partir duquel tu construis ton treeview.

T'es en première année info de gestion et tu penses à faire des choses que moi j'ai appris à faire en 3e Info; alors ne crois pas que t'es nul. C'est pas parceque quelque chose ne va pas comme tu veux que tu vas te décourager.
Commenter la réponse de stankov
cs_halbi 17 Messages postés mardi 9 octobre 2007Date d'inscription 30 janvier 2013 Dernière intervention - 28 mai 2008 à 19:23
0
Merci
Déja, merci de bien vouloir m'aider, c'est simpa et merci aussi pour les encouragements
je suis en alternance en faite, je bosse ce projet en entreprise et cette semaine je suis en cours, donc je te poste le code la semaine prochaine si tu veux bien.
Commenter la réponse de cs_halbi
cs_halbi 17 Messages postés mardi 9 octobre 2007Date d'inscription 30 janvier 2013 Dernière intervention - 2 juin 2008 à 14:15
0
Merci
Voila comme promis Stankov, je viens poster le bout de mon code concernant les treenodes :





 


Il doit paraitre bordelique pour vous, mais je suis encors debutant, veuillez m'excuser





Function
Lister_Noeud(ByVal NomRep As String, ByRef Noeud As
Windows.Forms.TreeNode, ByVal Wi As Int32) As
Boolean                                                        

'Voila la fonction recursive (ou routine)


        Dim listbox As New Windows.Forms.ListBox

        ftpcd(NomRep, axinet1)                                     

'ces fonctions viennent d'une autre feuille et me servent


        ftpdir(listbox, axinet1)                                         

'a lister le contenu du ftp


        Dim wrep As String
        Dim wnoeud As New Windows.Forms.TreeNode

        Wi = 0
        For Wi = 0 To listbox.Items.Count - 1                           '

pour wi de 0 au nombre d'elements de la listbox


            wrep = listbox.GetItemText(listbox.Items(Wi))              

'wrep = elements de la listbox


            wnoeud.ImageIndex = 0
            wnoeud.SelectedImageIndex = 0
            wnoeud.Text = wrep                                         

'texte du noeud = contenu de wrep


          
            If InStr(wrep, "/") > 0 Then                               

'si wrep comporte au moins un "/"


                Lister_Noeud(wrep, wnoeud, Wi)                        
            Else
                ftpcd("..", axinet1)                                    

'sinon, on remonte d'un niveau


            End If
            Noeud.Nodes.Add(wnoeud)
        Next
    End Function

'-----------------------------------------------------------------------------------------------------------------------------------------------------'

   
Private Sub Menu_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles
MyBase.Load                                                                                      

        Dim i As New Integer
        Dim Nom_Rep As String
        Dim lstb As New System.Windows.Forms.ListBox                  







        If ftpopen("





192.168.1.1



", "user", "pass", axinet1) = True Then 'ouverture connection ftp
            ftpdir(lstb, axinet1)                                                                                    'dir dans la lstb
            axinet1.Cancel()
            i = 0
            For i = 0 To lstb.Items.Count - 1                         
                ftpopen("192.168.1.1", "user", "pass", axinet1)    'connection ftp
                Nom_Rep = lstb.GetItemText(lstb.Items(i))              
                Dim noeud As New Windows.Forms.TreeNode
                noeud.ImageIndex = 0
                noeud.SelectedImageIndex = 0
                noeud.Text = Nom_Rep                                  
                If InStr(Nom_Rep, "/") > 0 Then                         'si dans nom_rep il y a un "/" alors
                    Lister_Noeud(Nom_Rep, noeud, i)                    
                End If
                TreeV_MAJ.Nodes.Add(noeud)                              'ajout du noeud
                axinet1.Cancel()
            Next
        Else
            MsgBox("non connecté au ftp")                              
        End If
    End Sub

Ce bout de code me génere un peu tout et n'importe quoi, je retrouve des noeuds enfants identiques dans tous mes noeuds parents, alors que d'autres n'apparaissent pas, j'espere avoir été clair
Mon maître de formation m'a aider à le developper mais je galere pas mal dans l'ensemble, j'ai encore un peu de mal à tout comprendre, voila si quelqu'un à autre chose à me proposer, le but étant de trouver tous les noeuds du treeview en ne connaissant pas le nombre de niveaux à l'avance avec les bons noeuds enfants appartenant aux bons noeuds parents
(Wouah quelle prise de tête ce truc )
Commenter la réponse de cs_halbi
cs_halbi 17 Messages postés mardi 9 octobre 2007Date d'inscription 30 janvier 2013 Dernière intervention - 6 juin 2008 à 10:18
0
Merci
arf je croyais que c'etait un site de developpeur ici :( lol
allez les gens, j'ai besoin de votre aide
Commenter la réponse de cs_halbi
cs_halbi 17 Messages postés mardi 9 octobre 2007Date d'inscription 30 janvier 2013 Dernière intervention - 16 juin 2008 à 11:01
0
Merci
c'est si compliqué que ça que personne arrive à me repondre ?
je suis en premiere année de bts info, je ne pense pas avoir le niveau suffisant pour pouvoir poser des colles à de grands developpeur comme vous, nan ?
bon si une âme charitable remarque ce message, merci de m'aider
Commenter la réponse de cs_halbi
stankov 8 Messages postés lundi 6 décembre 2004Date d'inscription 21 novembre 2008 Dernière intervention - 20 juin 2008 à 14:20
0
Merci
D2solé pour mon long silence, j'avais pas la possibilité de me mettre devant un ordinateur, congé maladie oblige.
Je viens de copier le code, je vais l'étudier ce soir si Dieu le permet.
je te donnerais mon feedBack Lundi.
Commenter la réponse de stankov
cs_halbi 17 Messages postés mardi 9 octobre 2007Date d'inscription 30 janvier 2013 Dernière intervention - 20 juin 2008 à 14:43
0
Merci
Merci c'est simpa de ta part,

j'espere ke c'est rien de grave pour ta maladie !
j'attends de tes nouvelles avec impatiente
bon week end à toi et puis repose toi
Commenter la réponse de cs_halbi
cs_halbi 17 Messages postés mardi 9 octobre 2007Date d'inscription 30 janvier 2013 Dernière intervention - 10 juil. 2008 à 09:08
0
Merci
UP
Commenter la réponse de cs_halbi
cs_haad 2 Messages postés mardi 24 décembre 2002Date d'inscription 23 juillet 2008 Dernière intervention - 23 juil. 2008 à 15:02
0
Merci
.:: haad ::.
Commenter la réponse de cs_haad
cs_haad 2 Messages postés mardi 24 décembre 2002Date d'inscription 23 juillet 2008 Dernière intervention - 23 juil. 2008 à 15:04
0
Merci
Private






Function
ParseTreeview(

ByVal
tv

As
TreeView)

As
SortedList


'sortedList qui stocke les r‚sultats du parcours






Dim
sl

As
SortedList =

New
SortedListsl.Clear()


For
i

As



Integer
= 0

To
TreeView2.Nodes.Count - 1


'on lance la fonction ParseNodeLevel sur chaque noeud racine du treeview

ParseNodeLevel(TreeView2.Nodes(i), sl)







Next






Return
sl


End



Function 








Private



Sub
ParseNodeLevel(

ByVal
node

As
TreeNode,

ByVal
sl

As
SortedList)


'ajout du noeud courant






If



Not
(sl.Contains(node.ImageToolTip))

Then

sl.Add(node.ImageToolTip, Path.GetFileName(node.Value))







End



If






'pour chaque noeud enfant du noeud courant






For
i

As



Integer
= 0

To
node.ChildNodes.Count - 1


'ajout … la liste






If



Not
(sl.Contains(node.ChildNodes(i).ImageToolTip))

Then

sl.Add(node.ChildNodes(i).ImageToolTip, Path.GetFileName(node.ChildNodes(i).ImageToolTip))







End



If






'appel de cette fonction pour chaque noeud enfant






'c'est ici qu'… lieu la r‚cursivit‚

ParseNodeLevel(node.ChildNodes(i), sl)







Next






End



Sub



.:: haad ::.
Commenter la réponse de cs_haad
cs_halbi 17 Messages postés mardi 9 octobre 2007Date d'inscription 30 janvier 2013 Dernière intervention - 11 août 2008 à 09:38
0
Merci
Je m'en vais tester ça, merci en tout cas, ça me donne déja une idée de ce que j'avais oublier (ex : SortedList, jamais entendu parler) 
 
Commenter la réponse de cs_halbi

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.