效果:
首先,需要将绘制模式设置为手动绘制,绑定绘制方法,添加颜色
//设置手动绘制
cmb.DrawMode = DrawMode.OwnerDrawFixed;
cmb.DropDownStyle = ComboBoxStyle.DropDownList;
cmb.DrawItem += cmb_DrawItem;
cmb.Items.Add(Color.Red);
cmb.Items.Add(Color.Green);
cmb.Items.Add(Color.Blue);
//选择第一个
cmb.SelectedIndex = 0;
添加一个方法,将颜色转为中文显示
private string ColorToChineseString(Color color)
{
string str = string.Empty;
if (color == Color.Red)
{
str = "红色";
}
else if (color == Color.Green)
{
str = "绿色";
}
else if (color == Color.Blue)
{
str = "蓝色";
}
else
{
str = color.Name;
}
return str;
}
绘制方法
private void cmb_DrawItem(object sender, DrawItemEventArgs e)
{
//选中项
e.DrawBackground();
e.DrawFocusRectangle();
if (e.Index < 0)
return;
ComboBox cmb = (ComboBox)sender;
Color color = (Color)cmb.Items[e.Index];
//画笔
SolidBrush brush = new SolidBrush(color);
Graphics g = e.Graphics;
Rectangle rect = e.Bounds;
rect.Inflate(-2, -2);
Rectangle rectColor = new Rectangle(rect.Location, new Size(20, rect.Height));
//绘制边框
g.DrawRectangle(new Pen(e.ForeColor), rectColor);
//填充颜色
g.FillRectangle(brush, rectColor);
//绘制文本
g.DrawString(ColorToChineseString(color), new Font("宋体", 9), new SolidBrush(e.ForeColor), (rect.X + 22), rect.Y);
}