C#自定义控件一下拉颜色框
效果图:
通过继承ComboBox可以设计出类似C#控件属性栏中的颜色下拉选择框。
添加组件命名为myColorComboBox.cs
第一步:继承ComboBox,publicpartialclassmyColorComboBox:ComboBox
第二步:构造下拉颜色选择框
privatevoidInitItems()
{
this.DrawMode =DrawMode.OwnerDrawFixed;//手动绘制所有元素
this.DropDownStyle =ComboBoxStyle.DropDownList;//下拉框样式设置为不能编辑
this.Items.Clear();//清空原有项
ArrayallColors =Enum.GetValues(typeof(KnownColor));//获取系统颜色名存入列表
foreach(KnownColorvarinallColors)
{
this.Items.Add(var.ToString());//加载该选项框的子项
}
this.SelectedIndex = 0;
}
在两个构造函数中加入InitItems()
第三步:重写OnDrawItem方法
protectedoverridevoidOnDrawItem(DrawItemEventArgse)
{
if(e.Index >= 0)//判断是否需要重绘
{
stringcolorName =this.Items[e.Index].ToString();//获取颜色名
SolidBrushbrush =newSolidBrush(Color.FromName(colorName));//定义画刷
Fontfont =newFont("宋体", 9);//定义字体
Rectanglerect = e.Bounds;
rect.Inflate(-2, -2);
RectanglerectColor =newRectangle(rect.Location,newSize(20,
rect.Height));
e.Graphics.FillRectangle(brush, rectColor);//填充颜色
e.Graphics.DrawRectangle(Pens.Black, rectColor);//绘制边框
e.Graphics.DrawString(colorName, font,Brushes.Black, (rect.X + 22), rect.Y);//绘制文字
}
}
第四步:增加控件属性
///<summary>
///选择的颜色名称
///</summary>
publicstringSelectColorName
{
get{returnthis.Text; }
}
///<summary>
///选择的颜色
///</summary>
publicColorSelectColor
{
get{returnColor.FromName(this.Text); }
}
用法:
直接从控件栏中找到自定义控件myColorComboBox,拖过去自动命名为myColorCombBox1,可以通过myColorCombBox1.SelectColor获取颜色,类型为Color,通过myColorCombBox1.SelectColorName获取用户选定的颜色名。
下面贴出全部代码:
//控件名:myColorComboBox
//作者:刘典武
//时间:2011-06-01
usingSystem;
usingSystem.ComponentModel;
usingSystem.Collections.Generic;
usingSystem.Diagnostics;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Drawing;
namespacemyControl
{
publicpartialclassmyColorComboBox:ComboBox
{
publicmyColorComboBox()
{
InitializeComponent();
InitItems();
}
publicmyColorComboBox(IContainercontainer)
{
container.Add(this);
InitializeComponent();
InitItems();
}
privatevoidInitItems()
{
this.DrawMode =DrawMode.OwnerDrawFixed;//手动绘制所有元素
this.DropDownStyle =ComboBoxStyle.DropDownList;//下拉框样式设置为不能编辑
this.Items.Clear();//清空原有项
ArrayallColors =Enum.GetValues(typeof(KnownColor));//获取系统颜色名存入列表
foreach(KnownColorvarinallColors)
{
this.Items.Add(var.ToString());//加载该选项框的子项
}
this.SelectedIndex = 0;
}
protectedoverridevoidOnDrawItem(DrawItemEventArgse)
{
if(e.Index >= 0)//判断是否需要重绘
{
stringcolorName =this.Items[e.Index].ToString();//获取颜色名
SolidBrushbrush =newSolidBrush(Color.FromName(colorName));//定义画刷
Fontfont =newFont("宋体", 9);//定义字体
Rectanglerect = e.Bounds;
rect.Inflate(-2, -2);
RectanglerectColor =newRectangle(rect.Location,newSize(20,
rect.Height));
e.Graphics.FillRectangle(brush, rectColor);//填充颜色
e.Graphics.DrawRectangle(Pens.Black, rectColor);//绘制边框
e.Graphics.DrawString(colorName, font,Brushes.Black, (rect.X + 22), rect.Y);//绘制文字
}
}
///<summary>
///选择的颜色名称
///</summary>
publicstringSelectColorName
{
get{returnthis.Text; }
}
///<summary>
///选择的颜色
///</summary>
publicColorSelectColor
{
get{returnColor.FromName(this.Text); }
}
}
}
分享到:
相关推荐
多颜色的下拉列表框的实现
在组合框内实现下拉的颜色拾取框,取自codeproject
摘要:C#源码,控件类库,ComboBox,Select美化 美化ComboBox,为窗体中的下拉列表框各个下拉项着色,这样在数据量较多的时候,更容易区分和取值。 private static Brush[] listBoxBrushes;//该数组用来存储绘制...
网上找了很多颜色下拉选择框控件和设计方式,都不太满意。于是自己设计了个简单的颜色下拉选择框。无下拉箭头的颜色下拉选择控件
功能描述:针对各类业务系统B/S的数据录入模式,对微软的控制进行...主要功能有:有得到焦点和失去焦点的颜色,得到焦点下拉日期选择框,数字型、浮点、电话、中文、大小写字母、IP地址等录入框,指定值的ID属性绑定值等
实例009 带下拉菜单的工具栏...... 9 实例010 具有提示功能的工具栏...... 9 1.3 状态栏设计...... 10 实例011 在状态栏中显示检查框...... 10 实例012 带进度条的状态栏...... 11 实例013 状态栏中加入...
5.提供丰富的单元格数据类型(或编辑方式):编辑框、下拉列表框、下拉表格、复选框、日期选择框、货币输入框、按钮、进度条、密码等。 6.行列的添加/删除,显示/隐藏、拖动、排序、锁定行列等功能 7.对创建的报表...
案例3 利用下拉列表框动态查询数据库信息 案例4 利用ListView控件导航数据库信息 案例5 带有数据库的会员登录系统 案例6 动态添加数据库数据信息 案例7 动态修改数据库数据信息 案例8 动态删除数据库数据信息 案例9...
案例3 利用下拉列表框动态查询数据库信息 案例4 利用ListView控件导航数据库信息 案例5 带有数据库的会员登录系统 案例6 动态添加数据库数据信息 案例7 动态修改数据库数据信息 案例8 动态删除数据库数据信息 案例9...
案例3 利用下拉列表框动态查询数据库信息 案例4 利用ListView控件导航数据库信息 案例5 带有数据库的会员登录系统 案例6 动态添加数据库数据信息 案例7 动态修改数据库数据信息 案例8 动态删除数据库数据信息 ...
2.3.7 ComboBox控件——下拉组合框控件 194 2.3.8 DomainUpDown控件——上下选择控件 195 2.3.9 DropDownStyle属性——指定组合框样式的值 197 2.3.10 GetItemCheckState方法——当前项的复选状态的值 198 2.3.11 ...
案例3 利用下拉列表框动态查询数据库信息 案例4 利用ListView控件导航数据库信息 案例5 带有数据库的会员登录系统 案例6 动态添加数据库数据信息 案例7 动态修改数据库数据信息 案例8 动态删除数据库数据信息 案例9...
C#(WINFORM)学习 一、 C#基础 基础 类型和变量 类型和变量 类型 C# 支持两种类型:“值类型”和“引用类型”。值类型包括简单类型(如 char、int 和 float 等)、枚举类型和结构类型。引用类型包括类 (Class)类 ...
5.2.4 获取指定颜色值和字体样式 97 5.2.5 DataGridView控件的相关应用 97 5.3 设计过程 98 5.3.1 打印信息的设置 98 5.3.2 表格样式的设置 100 5.3.3 打印类的设置 101 5.3.4 打印数据信息 108 第6章...
103 <br>0167 锁定文本框内的文本 103 <br>0168 使用Message.Show输出用户信息 104 <br>5.3 图片数据处理技巧 104 <br>0169 如何将图片存入数据库 104 <br>0170 如何将图片从数据库中读取...
5.2.4 获取指定颜色值和字体样式 5.2.5 DataGridView控件的相关应用 5.3 设计过程 5.3.1 打印信息的设置 5.3.2 表格样式的设置 5.3.3 打印类的设置 5.3.4 打印数据信息 第6章 决策分析模块 6.1 设计思路 6.2 关键...
这篇文章中我们重点需要实现的是(3)、(4)两项功能,下面我们来介绍具体实现的方法。 第一步,实现ImageComboBoxItem类。 要实现显示图标,当然要给每个项添加与图标相关的信息了,ImageComboBoxItem类应该包括...