Colorcombobox, combo box permettant de sélectionner des couleurs

Soyez le premier à donner votre avis sur cette source.

Vue 8 783 fois - Téléchargée 662 fois

Description

Pour un projet perso, j'ai besoin d'un combobox permettant de sélectionner une couleur.
N'ayant pas trouvé ce composant tout fait, et après quelques recherches, je me suis basé sur une source de Bidou : http://www.csharpfr.com/codes/CUSTOM-COMBOBOX-PERSONNALISER-COMBOBOX_37498.aspx

J'ai donc commencé une p'tite librairie de combobox cutomisées.

L'utilisation de la ColorComboBox est assez simple, il suffit de remplir la combo avec des objets ColorComboBoxItem en passant comme paramètre un texte et une couleur.

Lorsqu'une item est sélectionnée, la récupération du texte se fait par la proprièté SelectedText, et la couleur par SelectedValue de la ColorComboBox.

Source / Exemple :


private void FormMain_Load(object sender, EventArgs e)
        {
            #region ColorComboBox
            //remplissage de la combo type carré
            cmbBox1.Items.Add(new ColorComboBoxItem("Rouge", Color.Red));
            cmbBox1.Items.Add(new ColorComboBoxItem("Bleu", Color.Blue));
            cmbBox1.Items.Add(new ColorComboBoxItem("Vert", Color.Green));

            //remplissage de la combo type rectangle
            cmbBox2.Items.Add(new ColorComboBoxItem("Viollet", Color.Violet));
            cmbBox2.Items.Add(new ColorComboBoxItem("Jaune", Color.Yellow));
            cmbBox2.Items.Add(new ColorComboBoxItem("gris", Color.Gray));

            //remplissage de la combo type complet
            cmbBox3.Items.Add(new ColorComboBoxItem("Cyan", Color.Cyan));
            cmbBox3.Items.Add(new ColorComboBoxItem("Bleu foncé", Color.DarkBlue, Color.White));
            cmbBox3.Items.Add(new ColorComboBoxItem("Transparent", Color.Transparent));
            cmbBox3.Items.Add(new ColorComboBoxItem("Noir", Color.Black, Color.White));
            #endregion

            #region ImgComboBox
            imgBox1.AddImage("img0", imgList.Images[0]);
            imgBox1.AddImage("img1", imgList.Images[1]);
            imgBox1.AddImage("img2", imgList.Images[2]);
            imgBox1.Items.Add(new ImgComboBoxItem("texte", string.Empty));
            imgBox1.Items.Add(new ImgComboBoxItem("imgage 0", "img0", "img0"));
            imgBox1.Items.Add(new ImgComboBoxItem("imgage 1", "img1", "img1"));
            imgBox1.Items.Add(new ImgComboBoxItem("imgage 2", "img2", "img2"));
            #endregion
        }

//SelectedIndexChanged des combos :
        private void cmbBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            lbl1.Text = cmbBox1.SelectedText;
            lbl1.BackColor = cmbBox1.SelectedValue;
        }

        private void cmbBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            lbl2.Text = cmbBox2.SelectedText;
            lbl2.BackColor = cmbBox2.SelectedValue;
        }

        private void cmbBox3_SelectedIndexChanged(object sender, EventArgs e)
        {
            lbl3.Text = cmbBox3.SelectedText;
            lbl3.BackColor = cmbBox3.SelectedValue;
        }

        private void imgBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            lblTexte.Text = imgBox1.SelectedText;
            lblValue.Text = imgBox1.SelectedValue;
        }

Conclusion :


Pour voir les icônes des composants dans la boite à outils, il suffit d'ajouter les contrôle à afficher en passant par le menu "Choisir les composants" de la boite à outils.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Bidou
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
38 -
manshivas
Messages postés
58
Date d'inscription
mardi 20 janvier 2004
Statut
Membre
Dernière intervention
9 avril 2008
-
Merci bien, je vais regarder de ce coté ce soir.
yohan49
Messages postés
382
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
13 août 2011
7 -
dans ton fichier
ColorComboBox.cs

private void ColorComboBox_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index != -1)
{
ColorComboBoxItem item = this.Items[e.Index] as ColorComboBoxItem;
//si c'est bien une item de type ColorComboBoxItem
if (item != null)
{
e.DrawBackground(); //<====== a rajouer , ca permet d'avoir le rectangle bleu de selection et de ne pas avoir le text de l'item tout moche , c bien plus propre

RectangleF txtLoc = new RectangleF(e.Bounds.Location, e.Bounds.Size);


sinon tres bonne sources

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.