如何在所有组合框元素上改变组合框的背景色?

时间:2017-10-12 08:53:33

标签: c# winforms combobox controls

组合框我有点问题。

当有值时,我需要将组合框的背景颜色设置为红色。

我正在使用以下代码:

if (!string.IsNullOrEmpty(ComboTransmis.Text))
    ComboTransmis.BackColor = Color.OrangeRed;
else
    ComboTransmis.BackColor = Color.White;

但结果如下:

filesystem

只有背景颜色的文字,我需要所有元素都有它,我不知道怎么做。

如果有人有想法?

提前谢谢

1 个答案:

答案 0 :(得分:1)

你需要自己修改组合框来实现这个然而你会失去3d风格并且平坦。

基于this回答:

  

将组合框DrawMode属性更改为OwnerDrawFixed,并处理   DrawItem事件:

private void ComboTransmis_DrawItem(object sender, DrawItemEventArgs e)
{
   int index = e.Index >= 0 ? e.Index : 0;
   var brush = Brushes.Black;
   e.DrawBackground();
   e.Graphics.DrawString(ComboTransmis.Items[index].ToString(), e.Font, brush, e.Bounds, StringFormat.GenericDefault);
   e.DrawFocusRectangle();
}