Help : Recherche d'un noeud d'un treeview en vb.net

Résolu
VinyDev Messages postés 47 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 2 septembre 2011 - 26 janv. 2007 à 22:20
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

12 réponses

Utilisateur anonyme
26 janv. 2007 à 22:33
Bonsoir,

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




__________
Kenji
3
Utilisateur anonyme
26 janv. 2007 à 22:46
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
3
Utilisateur anonyme
26 janv. 2007 à 23:03
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
3
Utilisateur anonyme
26 janv. 2007 à 23:17
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
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
26 janv. 2007 à 23:23
Oulà, j'ai mis un "
Parent_" en trop (vive le copier-coller trop rapide)
Lire "frm_Equipements" à la place de "Parent_frm_Equipements"






__________
Kenji
3
VinyDev Messages postés 47 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 2 septembre 2011
26 janv. 2007 à 22:36
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
0
VinyDev Messages postés 47 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 2 septembre 2011
26 janv. 2007 à 22:36
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
0
VinyDev Messages postés 47 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 2 septembre 2011
26 janv. 2007 à 22:58
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
0
VinyDev Messages postés 47 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 2 septembre 2011
26 janv. 2007 à 23:06
C'est ma feuille principale oui, mais ce code est écrit sur une autre form...

[8)] [font=Comic Sans MS]VinyDevSans MS
0
VinyDev Messages postés 47 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 2 septembre 2011
27 janv. 2007 à 00:25
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
0
Utilisateur anonyme
27 janv. 2007 à 11:44
Tu place la node trouvé dans la propriété SelectedNode :
ParentForm.trw_Equipements.SelectedNode = tn






__________
Kenji
0
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 te remerci pour tous ces conseilles
A bientôt




[8)] [font=Comic Sans MS]VinyDevSans MS
0
Rejoignez-nous