TreeView et ImageList

Résolu
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - Modifié par cs_JMO le 11/04/2015 à 16:02
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 12 avril 2015 à 12:39
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

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
12 avril 2015 à 10:59
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)




0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
12 avril 2015 à 12:39
Bonjour Robert,

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

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