How to change combobox background color (not just the drop down list part)

Since you lose the 3D effects anyway with Igby Largeman's solution you're better off changing the FlatStyle property to Flat. The background color seems to be obeyed even in Windows 7 that way, and without re-implementing any low-level events.

I would consider this a bug on Microsoft's part...


This should get you started.

Change the combobox DrawMode property to OwnerDrawFixed, and handle the DrawItem event:

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();
}

The background color will be right but the style of the box will be flat, not the usual 3D style.

Tags:

.Net

Winforms