2017-10-12 1 views
0

Ich habe ein kleines Problem mit einer Combobox.Wie ändere ich die Backcolor der Combobox auf allen Combobox Elementen?

Ich muss die Hintergrundfarbe einer Combobox in rot setzen, wenn ein Wert darin ist.

Ich verwende den folgenden Code:

if (!string.IsNullOrEmpty(ComboTransmis.Text)) 
    ComboTransmis.BackColor = Color.OrangeRed; 
else 
    ComboTransmis.BackColor = Color.White; 

Aber das Ergebnis ist folgendes:

enter image description here

Es gibt nur Text ist, die die Hintergrundfarbe haben, ich brauche alle Element, das es und Ich habe keine Ahnung, wie es geht.

Wenn jemand eine Idee hat?

Vielen Dank im Voraus

+0

Ich denke, wenn ich die Frage richtig zu verstehen, müssen Schreiben Sie ein benutzerdefiniertes Steuerelement, um dies zu tun. Ps.s. Um durch jede Combobox auf Ihrem Formular zu iterieren, müssen Sie alle nachfolgenden Container angeben und jedes ihrer Elemente durchlaufen. –

+0

@MasterYoda Es ist nur für diesen einen –

+0

werfen Sie einen Blick auf diese Frage: https://stackoverflow.com/questions/6468024/how-to-change-combobox-backgound-color-not-just-the-drop-down-down- Listen-Teil. Sie müssen die Combobox selbst ändern, um dies zu erreichen, aber Sie verlieren den 3D-Stil und gewinnen flach. –

Antwort

1

Sie müssen die Combobox selbst modifizieren zu erreichen, aber Sie den 3D-Stil und gewinnen flach verlieren.

Basierend auf this Antwort:

Ändern der Combobox DrawMode Eigenschaft OwnerDrawFixed und die DrawItem Ereignis behandeln:

private void ComboTransmis_DrawItem(object sender, DrawItemEventArgs e) 
{ 
    int index = e.Index >= 0 ? e.Index : 0; 
    var brush = Brushes.Black; 
    e.DrawBackground(); 
    e.Graphics.DrawString(ComboTransmis.Items[index].ToString(), e.Font, brush, e.Bounds, StringFormat.GenericDefault); 
    e.DrawFocusRectangle(); 
} 
+0

p.s. Diese Frage könnte auch hilfreich für Sie sein: https://stackoverflow.com/questions/20812275/windows-form-combobox-custom-for-color :) –

Verwandte Themen