制作图形组合框

效果图:

制作图形组合框_第1张图片

技术实现:

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;                     

                     }                  

              }

       }

}

你可能感兴趣的:(制作图形组合框)