Custom combobox / personnaliser un combobox

Soyez le premier à donner votre avis sur cette source.

Vue 31 890 fois - Téléchargée 2 036 fois

Description

Custom ComboBox C#

Il y a plusieurs questions sur le forum au sujet de la personnalisation d'une ComboBox. Comme je n'ai pas trouvé d'exemple sur le site, je propose un petit morceau de code relativement simple qui permet "d'améliorer" quelque peu ce Control :

Il permet d'afficher des éléments en couleur, en gras, avec une image, changer la sélection de couleur, la couleur de fond d'un élément, rendre des éléments disabled, etc. On peut très simplement rajouter d'autres critères, au gré des besoins.

Source / Exemple :


private void FillCustomCombo() 
{ 
            // Add special item (color)
            this.customCbImgFix.Items.Add(new ComboBoxItem("Elément spécial", Color.Red, false));
            // Add normal item (ToString is used)
            this.customCbImgFix.Items.Add("Premier élément normal");
            // Add special item (image, couleur)
            ComboBoxItem cbi4 = new ComboBoxItem("Elément spécial", Color.DarkBlue, true);
            cbi4.IndexImageList = 0;
            this.customCbImgFix.Items.Add(cbi4);
            // Add normal item (ToString is used)
            this.customCbImgFix.Items.Add("Deuxième élément normal");
            // Add normal item (ToString is used)
            this.customCbImgFix.Items.Add("Troisième élément normal");
            // Add special item (image)
            ComboBoxItem cbi5 = new ComboBoxItem();
            cbi5.DisplayName = "Elément spécial";
            cbi5.IndexImageList = 1;
            cbi5.IsEnabled = false;
            this.customCbImgFix.Items.Add(cbi5);
            // Add special item (bold)
            this.customCbImgFix.Items.Add(new ComboBoxItem("Elément spécial", Color.Black, true));
            // Add normal item (ToString is used)
            this.customCbImgFix.Items.Add("Quatrième élément normal");
            // Add special item (backColor, foreColor)
            ComboBoxItem cbi6 = new ComboBoxItem("Elément spécial", Color.Red, false);
            cbi6.BackColor = Color.Beige;
            this.customCbImgFix.Items.Add(cbi6);
            ComboBoxItem cbi7 = new ComboBoxItem();
            cbi7.DisplayName = "Elément spécial";
            cbi7.BackColor = Color.Beige;
            this.customCbImgFix.Items.Add(cbi7);
            ComboBoxItem cbi8 = new ComboBoxItem();
            cbi8.DisplayName = "Elément spécial";
            cbi8.BackColor = Color.Beige;
            this.customCbImgFix.Items.Add(cbi8);
            ComboBoxItem cbi9 = new ComboBoxItem();
            cbi9.DisplayName = "Elément spécial";
            cbi9.BackColor = Color.Beige;
            this.customCbImgFix.Items.Add(cbi9);
}

Conclusion :


Comme vous pouvez le constater, il y a deux Controls. Celui qui possède des ItemHeight différents pose un problème d'affichage quand il est en mode DropDownList. C'est pour cela que j'ai désactivé ce mode. Si quelqu'un sait comment faire pour dessiner soit-même dans la zone de text, je suis preneur !

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
58
Date d'inscription
mardi 20 janvier 2004
Statut
Membre
Dernière intervention
9 avril 2008

Nickel, j'ai un besoin bien spécifique de combobox, je débute en C# et j'avais besoin d'un exemple pour modifier l'origine.
Messages postés
341
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
10 février 2009
2
Bien, rien à redire 9
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
52
Merci pour les idées. Tout dépend mon temps libre, je regarderai pour apporter quelques modifications supplémentaires...
Messages postés
355
Date d'inscription
samedi 30 octobre 2004
Statut
Membre
Dernière intervention
14 avril 2009

Je confirme mon premier commentaires trés bonne sources, code source bien commenté (en anglais) et rien de choquant dans la syntaxe. bref je mets 9/10 (pas 10 pour que tu cherche encore un peu de nouvelles idées => suggestion : pouvoir stylisé la combobox en elle même).
Messages postés
355
Date d'inscription
samedi 30 octobre 2004
Statut
Membre
Dernière intervention
14 avril 2009

Trés bonne idée et trés bon rendu global. Pour le détail je regarde le code et note aprés.
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.