Search code examples
.netwinforms

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


In a winform application running on windows 7 I want the change the background color of a combobox to highlight it. The comboxbox has a DropDownStyle of DropDownList.

When I programmatically change the BackColor property to Red, only the background of the actual drop down list is changed to Red. When the drop down list is not opened, the combobox background displaying the selected value remains grey. What can I do so it becomes red too?

Setting the BackColor property works fine when app is run on Windows XP


Solution

  • 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.