Bonjour à tous,
Je manipule depuis maintenant plusieurs années les différents controles proposés par les Windows.Forms. Je suis donc extrêmement familier au ListView, que j'utilise très fréquemment, et c'est la première fois que je rencontre ce problème.
Voici la méthode me permettant de remplir mon ListView :
Jusqu'ici, rien de grave. Seulement, à l'exécution, si l'item devant être dessiné en vert est le premier de la liste (index 0), ce dernier apparaitra en blanc ... Lors de l'affichage de ma Form, il n'y aucun item de selectionné. Un lvPreparations.Refresh() ne change rien. Le premier item devient vert lorsque l'utilisateur clique sur n'importe quel élément de la liste, et le problème disparait. Seulement, j'aimerais qu'au chargement, l'item devant apparaitre en vert le soit effectivement !
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 /// <summary> /// Update the ListView with preparation information. /// </summary> private void UpdateGUI() { this.lvPreparations.Items.Clear(); if (this.Definition_Fk == null) return; ArrayList alPrep = BusinessMapping.GetHarnessPreparations(this.Definition_Fk); foreach(Business.Electricity.DataBase.Tables.EDB_HAR_PRP_FILES prp in alPrep) { ListViewItem lvi = new ListViewItem(prp.Name); // If the preparation is the favorite, set backcolor to light green if (prp.Favorite == "Yes") lvi.BackColor = Color.LightGreen; lvi.SubItems.Add(prp.Description); lvi.SubItems.Add(prp.Favorite); lvi.SubItems.Add(prp.L); lvi.SubItems.Add(prp.S); if (prp.DateCreation != DateTime.MinValue) lvi.SubItems.Add(prp.DateCreation.ToShortDateString()); else lvi.SubItems.Add("-"); if (prp.DateValidation != DateTime.MinValue) { lvi.SubItems.Add(prp.DateValidation.ToShortDateString()); lvi.ImageIndex = 0; } else { lvi.SubItems.Add("-"); lvi.ImageIndex = -1; } lvi.SubItems.Add(prp.UserFK); lvi.SubItems.Add(prp.FileName); lvi.Tag = prp; this.lvPreparations.Items.Add(lvi); } }
Encore une fois, le problème ne se produit pas lorsque l'item vert n'est pas en position 0. Bref, incompréhensible.
Quelqu'un est-il déjà tombé sur ce souci? Merci d'avance pour vos lumières...
PS : assigner le SelectedIndex à 0 lors du chargement solutionnerait le problème mais j'aimerais savoir s'il s'agit d'un bug identifié ou d'une erreur de ma part.
[Edit] : mise en forme
Partager