我想为每个项目自定义我的组合框,与字体,背景等相同。
有没有简单的方法来设置每个Combobox项目的自定义背景颜色?
答案 0 :(得分:0)
这是一个简单的例子。在这个例子中,我的组合框有一些与颜色名称相同的项目(红色,蓝色等),并从中更改每个项目的背景。只需流动步骤:
1)将 DrawMode 设置为 OwnerDrawVariable :
如果此属性设置为正常,则此控件永远不会引发DrawItem事件
ComboBox1.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
2)添加 DrawItem 事件:
ComboBox1.DrawItem += new DrawItemEventHandler(ComboBox1_DrawItem);
3)输入您自己的代码来自定义每个项目:
private void ComboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
Graphics g = e.Graphics;
Rectangle rect = e.Bounds; //Rectangle of item
if (e.Index >= 0)
{
//Get item color name
string itemName = ((ComboBox)sender).Items[e.Index].ToString();
//Get instance a font to draw item name with this style
Font itemFont = new Font("Arial", 9, FontStyle.Regular);
//Get instance color from item name
Color itemColor = Color.FromName(itemName);
//Get instance brush with Solid style to draw background
Brush brush = new SolidBrush(itemColor);
//Draw the item name
g.DrawString(itemName, itemFont, Brushes.Black, rect.X, rect.Top);
//Draw the background with my brush style and rectangle of item
g.FillRectangle(brush, rect.X, rect.Y, rect.Width, rect.Height);
}
}
4)还需要添加颜色:
ComboBox1.Items.Add("Black");
ComboBox1.Items.Add("Blue");
ComboBox1.Items.Add("Lime");
ComboBox1.Items.Add("Cyan");
ComboBox1.Items.Add("Red");
ComboBox1.Items.Add("Fuchsia");
ComboBox1.Items.Add("Yellow");
ComboBox1.Items.Add("White");
ComboBox1.Items.Add("Navy");
ComboBox1.Items.Add("Green");
ComboBox1.Items.Add("Teal");
ComboBox1.Items.Add("Maroon");
ComboBox1.Items.Add("Purple");
ComboBox1.Items.Add("Olive");
ComboBox1.Items.Add("Gray");
您可以根据需要更改矩形大小和位置以绘制自己的项目。
我希望这篇文章很有用。