
Je souhaite colorier (backcolor) l’item d’un listview selon la valeur qu’il possède ! Voici un exemple pour afficher des couleurs dans une ListView sous Visual Studio 2017 (VB.net).

Dans le code source ci-dessous, dans un premier temps on affiche la ListView sans les couleurs, puis par la suite on appel la fonction « Affichage_cartes_couleurs() », qui permet de changer la couleur en fonction de l’état des cartes.

Code Source pour afficher les cartes d’un PABX
Public Sub Afficher_cartes_BDD()
Try
Dim id As Integer
Dim pas As Integer
With Lv_fichier
'vider la ListView
.Clear()
.Sorting = Nothing
.ListViewItemSorter = Nothing
.View = View.Details
'Créer le nom des colonnes
.Columns.Add("0").Width = 22
.Columns.Item(0).Text = "Id"
.Columns.Add("1").Width = 0
.Columns.Item(1).Text = "Clef"
.Columns.Add("2").Width = 0
.Columns.Item(2).Text = "EAT"
.Columns.Add("3").Width = 40
.Columns.Item(3).Text = "RES"
.Columns.Add("4").Width = 40
.Columns.Item(4).Text = "NOE"
.Columns.Add("5").Width = 40
.Columns.Item(5).Text = "ACT"
.Columns.Add("6").Width = 40
.Columns.Item(6).Text = "CPL"
.Columns.Add("7").Width = 80
.Columns.Item(7).Text = "TYP"
.Columns.Add("8").Width = 140
.Columns.Item(8).Text = "ETA"
.Columns.Add("9").Width = 140
.Columns.Item(9).Text = "VER"
.Columns.Add("10").Width = 90
.Columns.Item(10).Text = "TOT"
.Columns.Add("11").Width = 80
.Columns.Item(11).Text = "UTI"
.Columns.Add("12").Width = 80
.Columns.Item(12).Text = "LIB"
.Columns.Add("13").Width = 140
.Columns.Item(13).Text = "DATE"
id = 0
For i = 1 To nb_CARTES
.Items.Add(id)
'On ne sait pas si la carte est dans la BDD
.Items(id).ImageIndex = 0
.Items(id).SubItems.Add(Format(Tab_CARTES(i).RES, "00") & Format(Tab_CARTES(i).NOE, "00") & Format(Tab_CARTES(i).ACT, "00") & Format(Tab_CARTES(i).CPL, "00"))
.Items(id).SubItems.Add(Tab_CARTES(i).id_PABX)
.Items(id).SubItems.Add(Format(Tab_CARTES(i).RES, "00"))
.Items(id).SubItems.Add(Format(Tab_CARTES(i).NOE, "00"))
.Items(id).SubItems.Add(Format(Tab_CARTES(i).ACT, "00"))
.Items(id).SubItems.Add(Format(Tab_CARTES(i).CPL, "00"))
.Items(id).SubItems.Add(Tab_CARTES(i).TYP)
.Items(id).SubItems.Add(Tab_CARTES(i).ETA)
.Items(id).SubItems.Add(Tab_CARTES(i).VER)
.Items(id).SubItems.Add(Tab_CARTES(i).EQT_total)
.Items(id).SubItems.Add(Tab_CARTES(i).EQT_util)
.Items(id).SubItems.Add(Tab_CARTES(i).EQT_libre)
.Items(id).SubItems.Add(tab_CARTES_DATE(i))
id += 1
Next
End With
'Mise à jour des couleurs
Affichage_cartes_couleurs()
Catch ex As Exception
TSSL_status.Text = ex.Message
End Try
End Sub
Voici le résultat, une couleur est affiché en fonction de l’état des cartes d’un PABX.
Code Source pour afficher les couleurs en fonction de l’état des cartes
Le point le plus important dans le code source c’est de ne pas oublier la ligne suivante, car sinon il ne se passe rien…
.Items(i).UseItemStyleForSubItems = False
Ensuite rien de spécial, on applique les propriétés standard pour chaque cellule de la ListView en fonction du nom affiché pour l’état de la carte d’un PABX.
Private Sub Affichage_cartes_couleurs()
'Mise à jour des couleurs
With Lv_fichier
For i = 0 To Lv_fichier.Items.Count - 1
.Items(i).UseItemStyleForSubItems = False
Select Case .Items(i).SubItems(8).Text
Case "IN SERVICE"
.Items(i).SubItems(8).ForeColor = Color.White
.Items(i).SubItems(8).BackColor = Color.Green
Case "OUT OF SERV"
.Items(i).SubItems(8).ForeColor = Color.White
.Items(i).SubItems(8).BackColor = Color.Red
Case "ONLY OPS FILE"
.Items(i).SubItems(8).ForeColor = Color.Black
.Items(i).SubItems(8).BackColor = Color.Yellow
Case "ONLY MAO FILE"
.Items(i).SubItems(8).ForeColor = Color.White
.Items(i).SubItems(8).BackColor = Color.Blue
Case "REG NOT INIT"
.Items(i).SubItems(8).ForeColor = Color.White
.Items(i).SubItems(8).BackColor = Color.Gray
End Select
Next
End With
End Sub
Pour toutes questions ou améliorations du code source n’hésitez pas à laisser un commentaire 😉
Poster un Commentaire