Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何更改所有combobox元素上combobox的背景色?_C#_Winforms_Combobox_Controls - Fatal编程技术网

C# 如何更改所有combobox元素上combobox的背景色?

C# 如何更改所有combobox元素上combobox的背景色?,c#,winforms,combobox,controls,C#,Winforms,Combobox,Controls,我对组合框有点小问题 当组合框中有值时,我需要将它的背景颜色设置为红色 我正在使用以下代码: if (!string.IsNullOrEmpty(ComboTransmis.Text)) ComboTransmis.BackColor = Color.OrangeRed; else ComboTransmis.BackColor = Color.White; 但结果是: 只有文本有背景色,我需要所有元素都有它,我不知道怎么做 如果有人有主意的话 提前感谢您您需要自己修改组合框

我对组合框有点小问题

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

我正在使用以下代码:

if (!string.IsNullOrEmpty(ComboTransmis.Text))
    ComboTransmis.BackColor = Color.OrangeRed;
else
    ComboTransmis.BackColor = Color.White;
但结果是:

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

如果有人有主意的话


提前感谢您

您需要自己修改组合框来实现这一点,但是您会失去3d风格并获得平面效果。

根据答案:

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


我认为,如果我正确理解了这个问题,您需要编写一个自定义控件来实现这一点。另外,为了遍历表单上的每个组合框,您需要指定所有后续容器,并循环遍历它们的每个项。@MasterYoda仅此而已。请看以下问题:。你需要自己修改组合框来实现这一点,但是你失去了3d风格,获得了平面效果。@MasterYoda你最后的评论帮助我!它只需要将
FlatStyle
属性设置为
Flat
,并将
BackColor
应用于所有元素。谢谢你的光!愿原力与你同在!p、 这个问题可能对你的未来也很有用:)
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();
}