TreeView et ImageList [Résolu]

Signaler
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
cs_JMO
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
Bonjour le Forum,

Dans un formulaire, j'ai chargé une classe ImageList, avec 5 images:
1ère : Logo Excel
2ème : Logo Word
3ème : Image Forward (traitement sélectionné)
4ème : Image World
5ème : Image Billboard

Je créé dynamiquement le TreeView1, puis les nodes.

Sub InitializeTreeView()
Dim names As New List(Of String) From {"Création Plan de Production", _
"Création Consignes Client", _
"Création Consignes Client (Delta)", _
"Création Consignes SAVEMUTU"}
Treeview1.BeginUpdate()
Treeview1.Nodes.Add("Choix du traitement")
Treeview1.Location = New Point(15, 100)
Treeview1.Size = New Size(600, 1200)
Treeview1.BorderStyle = BorderStyle.None
Treeview1.BackColor = Color.NavajoWhite
Treeview1.Font = New Font("Arial", 12, FontStyle.Underline)
Treeview1.ImageList = ImageList1
Treeview1.ImageIndex = 4
Treeview1.SelectedImageIndex = 4

For Each item As String In names
Dim newnode As New TreeNode
newnode.Text = item
newnode.NodeFont = New Font("Arial", 12, FontStyle.Italic)
Treeview1.Nodes(0).ImageIndex = 3
Treeview1.Nodes(0).SelectedImageIndex = 3
Treeview1.Nodes(0).Nodes.Add(newnode)
Next
Treeview1.ExpandAll()
Me.Controls.Add(Treeview1)
Treeview1.EndUpdate()
End Sub

Private Sub InitializeNodePDP()
' Déclaration des variables
Dim arrLine As New List(Of String)
Dim parts() As String

' Creation d'un tableau contenant toutes les lignes du fichier config .ini
arrLine = System.IO.File.ReadAllLines(PathTeam & PathConfig & FileConfig, _
System.Text.Encoding.Default).ToList
' Parcours du tableau
For Each items As String In arrLine
Dim MyCustomer As String
' Split sur vbtab pour récupérer le nom du client et les colonnes du Plan de Production
parts = items.Split(New Char() {Convert.ToChar(Keys.Tab)}, StringSplitOptions.RemoveEmptyEntries)

If UBound(parts) = 1 Then
MyCustomer = Replace(parts(0), Chr(64), vbNullString)
Treeview1.Nodes(0).Nodes(0).ImageIndex = 4
Treeview1.Nodes(0).Nodes(0).SelectedImageIndex = 0
Treeview1.Nodes(0).Nodes(0).Nodes.Add(MyCustomer)
End If
Next
Treeview1.ExpandAll()
End Sub


Mon souci, ce sont les images, je souhaiterai que :
- que le TreeView (Choix du traitement) ait toujours la 4ème image (World);
- que les Nodes (Création ...) ait toujours la 5ème image (Billboard);
- que dans le node fils (Client 1, Client 2 ....) je permute au clic sur les images 3 (Forward) et 0 (Logo Excel).

Soit, par rapport à l'image :
World (Choix du traitement)
Billboard (Création Plan de Production)
Logo Excel (Client 1 non sélectionné)
Forward (Client 2 sélectionné)
Logo Excel (Client 3 non sélectionné)
Billboard (Création Consignes ...)
Billboard (Création Consignes ...)
Billboard (Création Consignes ...)

Je n'arrive pas à figer les images du "Choix du traitement" et des "Création ...".

Merci pour vos suggestions,
jean-marc

1 réponse

Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
27
Bonjour

Il faut que tu définisses l'index de l'image sur le "node" que tu ajoutes et non pas sur le node parent.

Dim newnode As New TreeNode
newnode.Text = item
newnode.NodeFont = New Font("Arial", 12, FontStyle.Italic)
newnode.ImageIndex = 3
newnode.SelectedImageIndex = 3
Treeview1.Nodes(0).Nodes.Add(newnode)




cs_JMO
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
24
Bonjour Robert,

Effectivement, en suivant tes conseils avisés, j'obtiens le résultat souhaité.

Merci et bonne journée,
@+
jean-marc