2011-06-24 3 views
19

В приложении winform, запущенном на окнах 7, я хочу, чтобы цвет фона выделился, чтобы выделить его. В comboxbox есть DropDownStyle из DropDownList.Как изменить цвет фона combobox (не только часть выпадающего списка)

Когда я программно изменяю свойство BackColor на красный, только фон фактического выпадающего списка изменяется на красный. Когда раскрывающийся список не открывается, фон со списком, отображающий выбранное значение, остается серым. Что я могу сделать, это тоже станет красным?

Установка свойства BackColor отлично работает, когда приложение запускается на Windows XP

ответ

14

Это должно вам начать работу.

Изменения выпадающего 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(); 
} 

цвет фон будет правильным, но стиль коробки будет плоским, а не обычным 3D стиля.

+6

Спасибо, что это хороший старт. Кто-нибудь знает, как изменить цвет фона и сохранить 3D-стиль? – JBB

+0

Очень полезно! Спасибо. Мне пришлось добавить ... if (e.Index == -1) return; --- когда я загружаю «System.ArgumentOutOfRangeException». Кроме того, было бы неплохо изменить цвет фона при фокусировке. –

6

Поскольку вы теряете 3D-эффекты в любом случае с помощью решения Igby Largeman, вам лучше сменить свойство FlatStyle на Flat. Цвет фона, кажется, соблюдается даже в Windows 7 таким образом, и без повторной реализации каких-либо событий низкого уровня.

Я считаю это ошибкой со стороны Microsoft ...

+0

Это приводит к совершенно другому виду, а также приводит к некоторым довольно раздражающим мерцающим артефактам. –

+0

Это дало мне проблему на Windows Server 2012 R2. То же самое отлично работает на Windows Server 2008. Работает с «FlatStyle» на «Flat». Ты спас свой день на очень важном этапе. – RBT

Смежные вопросы