Bonjour

Je suis sur un Treeview qui me résiste. Il affiche un arbre de contact. Il n'a donc pas de profondeur fixée.

Je le charge initialement avec la première procédure et je continue avec la suivante à chaque développement de branche.

Mon problème est que je voudrais charger la nouvelle branche lors du clic sur la croix "expand". Pour le moment, il faut développer/réduire/redévelopper pour faire ce chargement.

A mon avis, mon problème vient de la nécessiter de sélectionner un nom. Est-il possible de renvoyer le noeud dont la croix vient d'être sélectionnée?


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Private Sub ListBox5_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox5.Click
        'TreeView1.ImageList = "C:\Users\Zaratoustra\Documents\VB\ICones\bill-homme-personne-utilisateur-icone-6596-128.png"
        TreeView1.Nodes.Clear()
        TreeView1.Nodes.Add(ListBox5.Text)
 
        Dim r1 = From elt In tableLiaison
            Where (elt.Field(Of String)("Contact1") = ListBox5.Text Or elt.Field(Of String)("Contact2") = ListBox5.Text)
                        Select elt
        For Each P In r1
            If P("Contact1").ToString = ListBox5.Text Then
                TreeView1.Nodes(0).Nodes.Add(P("Contact2").ToString)
            Else
                TreeView1.Nodes(0).Nodes.Add(P("Contact1").ToString)
            End If
        Next
 
        For i = 0 To TreeView1.Nodes(0).GetNodeCount(False) - 1
            Dim r2 = From elt In tableLiaison
           Where (elt.Field(Of String)("Contact1") = TreeView1.Nodes(0).Nodes(i).Text Or elt.Field(Of String)("Contact2") = TreeView1.Nodes(0).Nodes(i).Text)
                       Select elt
 
            For Each P In r2
                If P("Contact1").ToString = TreeView1.Nodes(0).Nodes(i).Text Then
                    TreeView1.Nodes(0).Nodes(i).Nodes.Add(P("Contact2").ToString)
                Else
                    TreeView1.Nodes(0).Nodes(i).Nodes.Add(P("Contact1").ToString)
                End If
 
            Next
        Next
 
    End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
 Private Sub TreeView1_AfterExpand(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterExpand
 
        If TreeView1.SelectedNode Is Nothing Then
            TreeView1.SelectedNode = TreeView1.Nodes(0)
        End If
        For Each n In TreeView1.SelectedNode.Nodes
            n.Nodes.Clear()
            Dim r1 = From elt In tableLiaison
                        Where (elt.Field(Of String)("Contact1") = n.Text Or elt.Field(Of String)("Contact2") = n.Text)
                                    Select elt
            For Each P In r1
                If P("Contact1").ToString = n.Text Then
                    n.Nodes.Add(P("Contact2").ToString)
                Else
                    n.Nodes.Add(P("Contact1").ToString)
                End If
            Next
        Next
    End Sub