颜色下拉菜单(combox)

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
 
namespace Combox
{
    /// <summary>
    /// Form1 的摘要说明。
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.ComboBox comboBox1;
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.Panel panel1;
        /// <summary>
        /// 必需的设计器变量。
        /// </summary>
        private System.ComponentModel.Container components = null;
 
        public Form1()
        {
            //
            // Windows 窗体设计器支持所必需的
            //
            InitializeComponent();
 
            //
            // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
            //
        }
 
        /// <summary>
        /// 清理所有正在使用的资源。
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null) 
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }
 
        #region Windows 窗体设计器生成的代码
        /// <summary>
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改
        /// 此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.comboBox1 = new System.Windows.Forms.ComboBox();
            this.label1 = new System.Windows.Forms.Label();
            this.panel1 = new System.Windows.Forms.Panel();
            this.SuspendLayout();
            // 
            // comboBox1
            // 
            this.comboBox1.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
            this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.comboBox1.Location = new System.Drawing.Point(168, 8);
            this.comboBox1.Name = "comboBox1";
            this.comboBox1.Size = new System.Drawing.Size(152, 22);
            this.comboBox1.TabIndex = 0;
            this.comboBox1.SelectedIndexChanged  = new System.EventHandler(this.comboBox1_SelectedIndexChanged);
            this.comboBox1.MeasureItem  = new System.Windows.Forms.MeasureItemEventHandler(this.comboBox1_MeasureItem);
            this.comboBox1.DrawItem  = new System.Windows.Forms.DrawItemEventHandler(this.comboBox1_DrawItem);
            // 
            // label1
            // 
            this.label1.Location = new System.Drawing.Point(8, 16);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(160, 16);
            this.label1.TabIndex = 1;
            this.label1.Text = "请在组合框中选择颜色值:";
            // 
            // panel1
            // 
            this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;

            this.panel1.Location = new System.Drawing.Point(8, 40);
            this.panel1.Name = "panel1";
            this.panel1.Size = new System.Drawing.Size(312, 136);
            this.panel1.TabIndex = 2;
            // 
            // Form1
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
            this.ClientSize = new System.Drawing.Size(328, 184);
            this.Controls.Add(this.panel1);
            this.Controls.Add(this.label1);
            this.Controls.Add(this.comboBox1);
            this.MaximizeBox = false;
            this.Name = "Form1";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "演示制作带图形的组合框";
            this.Load  = new System.EventHandler(this.Form1_Load);
            this.ResumeLayout(false);
 
        }
        #endregion
 
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main() 
        {
            Application.Run(new Form1());
        }
 
        private void Form1_Load(object sender, System.EventArgs e)
        {
        //  this.comboBox1.DisplayMember="Color";
            this.comboBox1.Items.Add(Brushes.Cyan);
            this.comboBox1.Items.Add(Brushes.DarkSalmon);
            this.comboBox1.Items.Add(Brushes.Gray);
            this.comboBox1.Items.Add(Brushes.Green);
            this.comboBox1.Items.Add(Brushes.AliceBlue);
            this.comboBox1.Items.Add(Brushes.Black);
            this.comboBox1.Items.Add(Brushes.Blue);
            this.comboBox1.Items.Add(Brushes.Chocolate);
            this.comboBox1.Items.Add(Brushes.Pink);
            this.comboBox1.Items.Add(Brushes.Red);
            this.comboBox1.Items.Add(Brushes.LightBlue);
            this.comboBox1.Items.Add(Brushes.Brown);
            this.comboBox1.Items.Add(Brushes.DodgerBlue);
            this.comboBox1.Items.Add(Brushes.MediumPurple);
            this.comboBox1.Items.Add(Brushes.White);
            this.comboBox1.Items.Add(Brushes.Yellow);           
        }
 
        private void comboBox1_MeasureItem(object sender, System.Windows.Forms.MeasureItemEventArgs e)
        {//设置列表项宽
            e.ItemHeight=this.comboBox1.ItemHeight-2;           
        }
 
        private void comboBox1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
        {//绘制列表项
 
            ComboBox MyCombox=(ComboBox)sender;
            if(e.Index==-1)
                return;
            if(sender==null)
                return;
            SolidBrush MyBrush=(SolidBrush)MyCombox.Items[e.Index];
            Graphics g=e.Graphics;
            //如果已经进行选择,则绘制正确的背景颜色和聚集框
            e.DrawBackground();
            e.DrawFocusRectangle();
            //绘制颜色的预览框
            Rectangle MyRect=e.Bounds;
            MyRect.Offset(2,2);
            MyRect.Width=50;
            MyRect.Height-=4;
            g.DrawRectangle(new Pen(e.ForeColor),MyRect);
            //获取选定颜色的相应画刷对象,并填充预览框
            MyRect.Offset(1,1);
            MyRect.Width-=2;
            MyRect.Height-=2;
            g.FillRectangle(MyBrush,MyRect);
            //绘制选定颜色的名称
            g.DrawString(MyBrush.Color.Name.ToString(),Font,new SolidBrush(e.ForeColor),e.Bounds.X 60,e.Bounds.Y 1);
        }
 
        private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
        {//显示选择的颜色
            if(this.comboBox1.SelectedIndex>=0)
            {
                SolidBrush MyBrush=(SolidBrush)(this.comboBox1.SelectedItem);
                this.panel1.BackColor=MyBrush.Color;                
            }           
        }
    }
}

原文地址:https://www.cnblogs.com/belx/p/9194778.html