在Windows 7上运行的winform应用程序中,我希望更改组合框的背景颜色以突出显示它.comboxbox的DropDownStyle为DropDownList.
当我以编程方式将BackColor属性更改为红色时,只有实际下拉列表的背景更改为红色.当未打开下拉列表时,显示所选值的组合框背景保持灰色.我能做什么,它也变红了?
在Windows XP上运行应用程序时,设置BackColor属性可正常工作
Igb*_*man 19
这应该让你开始.
将组合框DrawMode属性更改为OwnerDrawFixed,并处理DrawItem事件:
private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
int index = e.Index >= 0 ? e.Index : 0;
var brush = Brushes.Black;
e.DrawBackground();
e.Graphics.DrawString(comboBox1.Items[index].ToString(), e.Font, brush, e.Bounds, StringFormat.GenericDefault);
e.DrawFocusRectangle();
}
Run Code Online (Sandbox Code Playgroud)
背景颜色是正确的,但盒子的风格将是平的,而不是通常的3D风格.
由于你无论如何都会因为Igby Largeman的解决方案而失去3D效果,所以最好将FlatStyle
属性更改为Flat
.即使在Windows 7中也似乎遵循背景颜色,并且没有重新实现任何低级事件.
我认为这是微软的一个错误......
小智 5
我玩了一段时间,不想做任何太复杂的事情。上面的那些想法可能有效,但我所做的只是将 flatStyle 属性从“标准”更改为“平面”。
虽然不完美,但它至少将灰色/禁用外观的背景更改为白色。
您可以在此处查看比较:
加热源 #1 > DropdownList > flat(因为下拉菜单允许用户输入错误数据,所以最终决定)
加热器源 #2 > 下拉 > 标准(默认看起来不错)
房屋类型 > 下拉菜单 > 平面
热源 #1 供应商 > 下拉列表 > 标准(默认看起来禁用灰色)