Как изменить цвет фона combobox (а не только часть выпадающего списка)
В приложении winform, запущенном в Windows 7, я хочу, чтобы цвет фона выделенной области был выделен.
В comboxbox есть DropDownStyle из DropDownList.
Когда я программно изменяю свойство BackColor на Red, только фон фактического выпадающего списка изменяется на красный. Когда раскрывающийся список не открывается, фон со списком, отображающий выбранное значение, остается серым. Что я могу сделать, это тоже становится красным?
Настройка свойства BackColor отлично работает, когда приложение запущено в Windows XP
Ответы
Ответ 1
Это должно помочь вам начать.
Измените свойство DrawMode combobox на 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();
}
Цвет фона будет правильным, но стиль окна будет плоским, а не обычным 3D-стилем.
Ответ 2
Так как вы теряете 3D-эффекты в любом случае с помощью решения Igby Largeman, вам лучше изменить свойство FlatStyle
на Flat
. Цвет фона, кажется, соблюдается даже в Windows 7 таким образом и без повторной реализации каких-либо событий низкого уровня.
Я бы рассмотрел эту ошибку в части Microsoft...