IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

comment mettre certaines lignes en couleur dans une listBox ou une listView


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Inscrit en
    Mai 2009
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 217
    Points : 103
    Points
    103
    Par défaut comment mettre certaines lignes en couleur dans une listBox ou une listView
    Bonjour à tous,

    Lors du chargement de mes lignes dans une listBox, je voudrais afficher certaines lignes en couleurs.

    Je charge ma listBox par programme en C# de la manière suivante :
    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
     
                string sRequete = string.Format("SELECT ...");
     
                try
                {
                    cConnexion.OpenConnexion(cGlobal.ChaineConnexion, ref sqlCnx);
                }
                catch (Exception ex)
                {
                    cUtil.MessageBoxErreur(ex.Message);
                    return;
                }
                SqlDataReader dr = null;
     
                try
                {
                    if (cDataAccess.bExecuteReader(sRequete, sqlCnx, ref dr))
                    {
                        string Ligne = "";
                        while (dr.Read())
                        {
                            Ligne = dr[0].ToString();
                            codecouleur = dr[1].ToString();
                            listBox1.Items.Add(Ligne);
                         }
                 }
    Comment faire ? Peut on appliquer des codes couleurs sur un string ?
    J'ai trouvé qu'on ne peut pas appliquer de code couleur aux string mais uniquement sur des contrôles.

    J'ai également trouvé qu'il fallait abonner la listBox à un événement DrawItem de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    listBox1.DrawItem += new DrawItemEventHandler(listBox1_DrawItem);
    et enfin j'ai trouvé un exemple de fonction :
    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
     
    private void listBox1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
            {
     
                // Draw the background of the ListBox control for each item.
                e.DrawBackground();
                // Define the default color of the brush.
                Brush myBrush = Brushes.Purple;
     
                // Determine the color of the brush to draw each item based on the index of the item to draw.
     
                switch (e.Index)
                {
                    case 1:
                        myBrush = Brushes.Red;
                        break;
                    case 2:
                        myBrush = Brushes.Orange;
                        break;
                    case 3:
                        myBrush = Brushes.Purple;
                        break;
                }
                e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);
     
            }
    Le problème c'est que dans cet exemple la couleur s'applique en fonction du rang de la ligne dans la listbox, hors moi je voudrais l'appliquer en fonction du codecouleur qui m'est renvoyé dans le SELECT pour chacune de mes lignes.
    Comment passer cette information à la fonction ?

    Ou alors, ce que je veux faire est il plus facilement réalisable en passant par une listView ?

    Merci d'avance de votre aide.

  2. #2
    Membre régulier
    Inscrit en
    Mai 2009
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 217
    Points : 103
    Points
    103
    Par défaut
    Finalement, en passant par un listView plutôt qu'un listBox ça marche de façon bien plus facile. Ci dessous le code :

    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
     
    string sRequete = string.Format("SELECT ...");
    try
    {
         cConnexion.OpenConnexion(cGlobal.ChaineConnexion, ref sqlCnx);
    }
    catch (Exception ex)
    {
         cUtil.MessageBoxErreur(ex.Message);
         return;
    }
    SqlDataReader dr2 = null;
    try
    {
    if (cDataAccess.bExecuteReader(sRequete, sqlCnx, ref dr2))
    {
        while (dr2.Read())
        {
             ListViewItem lvItems = new ListViewItem(dr2[0].ToString());
             lvItems.UseItemStyleForSubItems = false;
            switch (dr2[1].ToString())
            {
                 case "1":
                    lvItems.ForeColor = Color.Green;
                   break;
                case "2":
                   lvItems.ForeColor = Color.Gray;
                   break;
                case "3":
                   lvItems.ForeColor = Color.Blue;
                   break;
                default:
                   lvItems.ForeColor = Color.Black;
                   break;
              }
              listView2.Items.Add(lvItems);
           }
           dr2.Close();
        }
     }
     catch (Exception ex)
     {
         cUtil.MessageBoxErreur(ex.Message);
     }
     cConnexion.CloseConnexion(ref sqlCnx);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 09/04/2013, 04h50
  2. Comment mettre certaines lignes gras dans un fichier EXCEL
    Par ludo35 dans le forum ODS et reporting
    Réponses: 8
    Dernier message: 05/05/2011, 14h49
  3. mettre certain mot en couleur dans un textArea
    Par lilou77 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 06/10/2006, 12h01
  4. Certaines lignes en couleur dans un ListView en VB6
    Par kaspar dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 18/01/2006, 15h00
  5. Comment mettre des lignes de couleur dans une TCheckListBox ?
    Par Isa31 dans le forum Composants VCL
    Réponses: 9
    Dernier message: 31/03/2005, 08h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo