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

C# Discussion :

Listbox avec couleurs [Débutant]


Sujet :

C#

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2012
    Messages : 2
    Par défaut Listbox avec couleurs
    Bonjour à tous,
    après plusieurs heures de recherche je me résous à finalement poster ma demande ici ! J'expose donc mon problème en essayant de faire simple: je souhaite avoir une listbox qui inclut un certain nombre de mots dépendant d'une liste déroulante. Jusqu'ici, aucun souci mais j'aimerai pousser le fonctionnement de ma ListBox en donnant une couleur à chaque mot pour les regrouper sous une catégorie (une catégorie= une couleur). Et c'est là que je coince, j'ai un début de solution avec une méthode trouvée sur le net:
    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
    private void ListBoxTest_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
    {
    e.DrawBackground();
    Brush myBrush = Brushes.black;
    switch(e.Index)
    {
    case 0:
    myBrush = Brushes.Red;
    break;
    case 1: 
    myBrush = Brusheds.DeepPink;
    break;
    }
    e.Graphics.DrawString(((ListBox)sender).Items[e.Index].ToString(), e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);
    e.DrawFocusRectangle();
    }
    J'ai également une méthode qui rajoute les éléments dans la liste mais je n'ai rien qui implique la couleur de la police à l'intérieur. Le problème avec mon code c'est que les résultats sont colorés selon l'ordre défini au-dessus, ainsi j'ai mon premier mot en rouge et le second en rose, peu importe le mot concerné.
    Je vais donner un exemple de ce que je désire pour que ce soit plus explicite:
    Supposons que ma liste est composée des mots fraise, tomate et citron. Je souhaiterais que "fraise" et "tomate" soit en rouges tandis que "citron" soit en jaune. D'après ce que j'ai lu un peu partout, ça me parait comme étant possible mais je dois mal m'y prendre... Je demande donc un petit coup de main, merci.
    PS: je débute avec c# et je pense que ça se voit.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2012
    Messages : 87
    Par défaut
    Bonjour Quinox,

    Je ne sais pas comment tu veux stocker ta correspondance catégorie/mots.
    Cependant en partant de ta méthode listBoxTest_DrawItem, on peut assez facilement conditionner le formatage de l'objet dessiné en fonction de sa valeur au lieu de son index.

    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
     
            private void listBoxTest_DrawItem(object sender, DrawItemEventArgs e)
            {
                e.DrawBackground();
                Brush myBrush = Brushes.Black;
     
                string categorie = "";
                if (e.Index >= 0)
                {
                    if (((ListBox)sender).Items[e.Index].ToString().Equals("Tomate") || ((ListBox)sender).Items[e.Index].ToString().Equals("Fraise"))
                    {
                        categorie = "Rouge";
                    }
                    else if (((ListBox)sender).Items[e.Index].ToString().Equals("Citron") || ((ListBox)sender).Items[e.Index].ToString().Equals("Banane"))
                    {
                        categorie = "Jaune";
                    }
                }
                switch (categorie)
                {
                    case "Rouge":
                        myBrush = Brushes.Red;
                        break;
                    case "Jaune":
                        myBrush = Brushes.Yellow;
                        break;
                }
                if (e.Index != -1)
                {
                e.Graphics.DrawString(((ListBox)sender).Items[e.Index].ToString(), e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);
                e.DrawFocusRectangle();
                }
            }
    En espérant que ça puisse t'aider.
    N'hésites pas si tu as besoin de précisions.

    MvK

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2012
    Messages : 2
    Par défaut
    C'est pile poil ce qui me fallait Mvk, un énorme merci à toi ! Désolé pour le temps de réponse mais je réserve le C# pour mon temps libre et j'en ai pas eu énormément ces derniers jours. :p
    En tout cas je te remercie encore, c'est exactement ce que j'avais en tête, de là à dire que c'est la solution la plus adaptée à la situation, je sais pas mais au moins c'est celle qui me convient vu comment j'ai énoncé mon souci.

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

Discussions similaires

  1. Simuler une listbox avec des couleurs
    Par Invité dans le forum Contribuez
    Réponses: 9
    Dernier message: 19/03/2020, 20h49
  2. listbox avec des items de couleur différente
    Par ifrit 23 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 08/02/2008, 22h28
  3. ListBox avec plusieur couleur
    Par greg06500 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/07/2007, 16h40
  4. ListBox avec selection avec differentes couleurs
    Par Flow_75 dans le forum C++Builder
    Réponses: 6
    Dernier message: 11/02/2007, 23h25
  5. dégradé sur une listbox avec 1/2 couleurs
    Par avogadro dans le forum Composants VCL
    Réponses: 8
    Dernier message: 05/05/2006, 18h21

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