Affichage Formater D'une listeBOX

Signaler
Messages postés
14
Date d'inscription
vendredi 15 février 2008
Statut
Membre
Dernière intervention
18 novembre 2012
-
Messages postés
65
Date d'inscription
jeudi 1 septembre 2011
Statut
Membre
Dernière intervention
22 juillet 2014
-
Bonjour ,
Je développe une application c# winform. J'aimerai pourvoir dans une de mes fiches de saisie formater l'affichage des listes.
Par exemple dans une listeBox afficher tous les fruits en rouge et les légumes en vert.
Je recupère les infos depuis une bd et j'ai un champs bool qui m'indique si le cet élément est un fruit ou non.

10 réponses

Messages postés
65
Date d'inscription
jeudi 1 septembre 2011
Statut
Membre
Dernière intervention
22 juillet 2014
7
Bonjour,

Ben en récupérant tes informations et en les ajoutant dans la listview, tu peux changer l'arrière plan de l'item par :
item.BackColor = System.Drawing.Color.LightGreen;

BinKentsu
Messages postés
14
Date d'inscription
vendredi 15 février 2008
Statut
Membre
Dernière intervention
18 novembre 2012

foreach (Fruit f in Fruits)
            {

                if (f.legume)
                {
                    ListeFruit.Items.Add(f.nom);
ListeFruit.ForeColor = System.Drawing.Color.LightGreen;
                }
                else
                {
                    ListeFruit.Items.Add(f.nom);
ListeFruit.ForeColor = System.Drawing.Color.red;
                }
                    
            }

--> resultat tous les éléments de la liste sont en vert!
Messages postés
65
Date d'inscription
jeudi 1 septembre 2011
Statut
Membre
Dernière intervention
22 juillet 2014
7
Non pas comme ça ^^
Je parle de cette façon :

foreach (Fruit f in Fruits)
{
   ListBoxItem item = new ListBoxItem();
   if (f.legume)
      item.BackColor = System.Drawing.Color.LightGreen;
   else
      item.BackColor = System.Drawing.Color.LightSalmon;

   item.Text = "ton fruit ou légume"
   listBox1.Items.Add(item);
}

BinKentsu
Messages postés
14
Date d'inscription
vendredi 15 février 2008
Statut
Membre
Dernière intervention
18 novembre 2012

moi j'ai pas la ListBoxItem lol je ne comprend pas desolee
Messages postés
14568
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
5 août 2020
426
Bonjour de cette façon tu colores le contrôle entier.
La couleur est donc la dernière appliquée. Le dernier item de ta liste est donc un légume.

Avec une ListBox il faut utiliser l'évènement Paint, mais apparemment il n'existe pas pour uen ListView


Whismeril
Messages postés
14568
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
5 août 2020
426
peut-être en héritant d'une listview et en réécrivant OnPaint.

        protected override void OnPaint(PaintEventArgs e)
        {
            ...
        }


Mais je n'ai pas d'exemple ici, je regarde si je me rappelle.

Whismeril
Messages postés
14568
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
5 août 2020
426
Ha j'avais pas vu la réponse de BinKentsu et c'est exactement ce que j'allais te proposer!

ListView1.Items[0].BackColor = Color.Green
;

Whismeril
Messages postés
65
Date d'inscription
jeudi 1 septembre 2011
Statut
Membre
Dernière intervention
22 juillet 2014
7
Moi j'avais un exemple mais avec une ListView, ce qui fait référence à ce qu'a dit Whismeril, et je confirme que ListViewItem existe, donc part plutôt sur cette idée.

BinKentsu
Messages postés
14
Date d'inscription
vendredi 15 février 2008
Statut
Membre
Dernière intervention
18 novembre 2012

Donc si je comprend bien faut je change de control que j'utilise une ListView ?
Messages postés
65
Date d'inscription
jeudi 1 septembre 2011
Statut
Membre
Dernière intervention
22 juillet 2014
7
Voilà c'est tout à fait ça :)
C'est pas plus compliqué t'inquiète

BinKentsu