【问题标题】:Color Picker Combo Box颜色选择器组合框
【发布时间】:2014-09-02 05:52:57
【问题描述】:

我想自定义我的组合框每个项目,与字体、背景等相同。
有没有简单的方法来设置每个 Combobox 项的自定义背景颜色?

【问题讨论】:

标签: combobox custom-controls customization


【解决方案1】:

这是一个简单的例子。在这个例子中,我的组合框有一些与颜色名称相同的项目(红色、蓝色等),并由此更改每个项目的背景。只需执行以下步骤:

1) 将 DrawMode 设置为 OwnerDrawVariable

如果此属性设置为 Normal,则此控件永远不会引发 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");

您可以更改矩形的大小和位置以根据需要绘制自己的项目。
我希望这篇文章有用。

【讨论】:

    猜你喜欢
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-21
    • 1970-01-01
    • 2010-12-30
    • 2020-07-16
    • 1970-01-01
    相关资源
    最近更新 更多