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

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

问题描述:

我对组合框有点问题。如何更改所有组合框元素上的组合框的背景颜色?

我需要将组合框的背景颜色设置为红色。

我用下面的代码:

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

但结果是这样的:

enter image description here

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

如果有人有想法?

预先感谢您

+0

我想,如果我理解正确的问题,你需要编写一个自定义控件来做到这一点。附:为了遍历表单中的每个组合框,您需要指定所有后续容器并遍历每个项目。 –

+0

@MasterYoda它只是为这个 –

+0

看看这个问题:https://*.com/questions/6468024/how-to-change-combobox-backgound-color-not-just-the-drop-down-列表部分。你需要自己修改组合框来达到这个目的,但是你会失去3D风格并且变得平坦。 –

你需要自己修改组合框但是你失去了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(); 
} 
+0

p.s.这个问题也许对你前进很有用:https://*.com/questions/20812275/windows-form-combobox-custom-form-color :) –