Help : Recherche d'un noeud d'un treeview en vb.net [Résolu]

Messages postés
47
Date d'inscription
lundi 5 janvier 2004
Statut
Membre
Dernière intervention
2 septembre 2011
- - Dernière réponse : VinyDev
Messages postés
47
Date d'inscription
lundi 5 janvier 2004
Statut
Membre
Dernière intervention
2 septembre 2011
- 28 janv. 2007 à 13:54
Je n'y comprends plus rien...
Je souhaite rechercher trouver un noeud dans un treeview pour faire un "expand" de celui-ci ; et tout ça via le code

J'ai donc un treeview dans lequel j'ai plusieurs niveaux de noeuds
Ensuite, lorsque je doubleclic sur une ligne d'un listview, je fait une recherche sur le nom du noeud recherché, comme ceci

    Private Sub lst_recherche_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles lst_recherche.DoubleClick
        'Nous allons sur le noeud sélectionné
        Dim f As New frm_Equipements
        Dim NoeudRecherche As String = Me.lst_recherche.Items(Me.lst_recherche.FocusedItem.Index).SubItems(1).Text
        Dim tn As TreeNode = f.RechercheNoeud(f.trw_Equipements.Nodes, NoeudRecherche)
        If Not (tn Is Nothing) Then
            'traitement de tn

        Else
            'traiter que le noeud demandé n'existe pas
            MsgBox("L'élément :" & vbCr & NoeudRecherche & vbCr & vbCr & "est introuvable ou inexistant !", MsgBoxStyle.Information)
        End If
    End Sub

    Public Function RechercheNoeud(ByVal nodes As TreeNodeCollection, ByVal NomNoeud As String) As TreeNode
        Dim n As TreeNode
        For Each n In nodes
            If n.Text.Equals(NomNoeud) Then : Exit For
            ElseIf (n.Nodes.Count > 0) Then
                n = Me.RechercheNoeud(n.Nodes, NomNoeud)
                If Not (n Is Nothing) AndAlso (n.Text.Equals(NomNoeud)) Then Exit For
            End If
        Next
        If Not (n Is Nothing) AndAlso (n.Text.Equals(NomNoeud)) Then Return n Else Return Nothing
    End Function

Or lorsque je lance la recherche, dans le sub RechercheNoeud, j'ai 0 en nombre de Nodes ????
Quelqu'un a-t-il la solution, car j'avoue que je suis bloqué sur ce point.

Merci d'avance pour votre aide

[8)] [font=Comic Sans MS]VinyDevSans MS
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
24
3
Merci
Bonsoir,

Normal, ton TreeView est Vide.
Tu déclare une nouvelle Form "frm_Equipements", donc la TreeView qu'lle contient est initialement vide.




__________
Kenji

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Charles Racaud
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
24
3
Merci
frm_Equipements, c'est ta feuille principale ?
En tout cas, si ce n'est pas le cas, il ne faut pas la redéclaré chaque fois. Il faut la déclaré en global.






__________
Kenji

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Charles Racaud
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
24
3
Merci
Si c'est ta feuille principale, alors pas la peine de la déclarer

[...]
'Nous allons sur le noeud sélectionné
<strike>Dim f As New frm_Equipements</strike>
Dim NoeudRecherche As String = Me.lst_recherche.Items(Me.lst_recherche.FocusedItem.Index).SubItems(1).Text
Dim tn As TreeNode = Me.RechercheNoeud(Me.trw_Equipements.Nodes, NoeudRecherche)
[...]





__________
Kenji

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Charles Racaud
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
24
3
Merci
Ok,
Ben tu peut définir une variable dans ta "Form2" qui représenta ta feuille principale.
Pour plus de faciliter, tu peut faire l'affectation directment dans la sub new

Private ParentForm As Parent_frm_Equipements



Public Sub New(ByVal Parent As Parent_frm_Equipements)
  ' This call is required by the Windows Form Designer.
  InitializeComponent()



  ' Add any initialization after the InitializeComponent() call.
  ParentForm = Parent
End Sub



Private Sub lst_recherche_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles lst_recherche.DoubleClick
  'Nous allons sur le noeud sélectionné
  Dim NoeudRecherche As String = Me.lst_recherche.Items(Me.lst_recherche.FocusedItem.Index).SubItems(1).Text
  Dim tn As TreeNode = ParentForm.RechercheNoeud(ParentForm.trw_Equipements.Nodes, NoeudRecherche)
  [...]

Et bien sur quand tu initialise ta "Form2" depuis ta feuille principale, tu la passe elle même en paramétre
Dim F2 As New Form2(Me)




__________
Kenji

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Charles Racaud
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
24
3
Merci
Oulà, j'ai mis un "
Parent_" en trop (vive le copier-coller trop rapide)
Lire "frm_Equipements" à la place de "Parent_frm_Equipements"






__________
Kenji

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Charles Racaud
Messages postés
47
Date d'inscription
lundi 5 janvier 2004
Statut
Membre
Dernière intervention
2 septembre 2011
0
Merci
Ah ok
Mais alors comment je fait "appel" au treeview de ma form "frm_Equipements" dans mon module sans vider

[8)] [font=Comic Sans MS]VinyDevSans MS
Commenter la réponse de VinyDev
Messages postés
47
Date d'inscription
lundi 5 janvier 2004
Statut
Membre
Dernière intervention
2 septembre 2011
0
Merci
Ah ok
Mais alors comment je fait "appel" au treeview de ma form "frm_Equipements" dans mon module sans vider

[8)] [font=Comic Sans MS]VinyDevSans MS
Commenter la réponse de VinyDev
Messages postés
47
Date d'inscription
lundi 5 janvier 2004
Statut
Membre
Dernière intervention
2 septembre 2011
0
Merci
C'est la feuille principale oui
Comment dois-je faire pour la déclarer en global et où dois-je le faire

Merci pour ton aide

[8)] [font=Comic Sans MS]VinyDevSans MS
Commenter la réponse de VinyDev
Messages postés
47
Date d'inscription
lundi 5 janvier 2004
Statut
Membre
Dernière intervention
2 septembre 2011
0
Merci
C'est ma feuille principale oui, mais ce code est écrit sur une autre form...

[8)] [font=Comic Sans MS]VinyDevSans MS
Commenter la réponse de VinyDev
Messages postés
47
Date d'inscription
lundi 5 janvier 2004
Statut
Membre
Dernière intervention
2 septembre 2011
0
Merci
Merci beaucoup pour ton aide : àa marche !!...
Reste à te demander comment je peux mettre en "HotTracking" ou surbrillance le noeud ainsi trouvé ?

Merci

[8)] [font=Comic Sans MS]VinyDevSans MS
Commenter la réponse de VinyDev
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
24
0
Merci
Tu place la node trouvé dans la propriété SelectedNode :
ParentForm.trw_Equipements.SelectedNode = tn






__________
Kenji
Commenter la réponse de Charles Racaud
Messages postés
47
Date d'inscription
lundi 5 janvier 2004
Statut
Membre
Dernière intervention
2 septembre 2011
0
Merci
Je te remerci pour tous ces conseilles
A bientôt




[8)] [font=Comic Sans MS]VinyDevSans MS
Commenter la réponse de VinyDev