2017-10-12 10 views
0

J'ai un petit problème avec un combobox.Comment changer backcolor de combobox sur tous les éléments combobox?

Je dois mettre la couleur d'arrière-plan d'une liste déroulante en rouge lorsqu'il y a une valeur dedans.

J'utilise le code suivant:

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

Mais le résultat est le suivant:

enter image description here

Il n'y a que du texte qui ont le backcolor, je besoin de tout élément ont et Je n'ai aucune idée de comment le faire.

Si quelqu'un a une idée?

Nous vous remercions à l'avance

+0

Je pense que si je comprends bien la question que vous devez écrire un contrôle personnalisé pour le faire. P.s. afin de parcourir chaque liste déroulante sur votre formulaire, vous devrez spécifier tous les conteneurs suivants et faire une boucle sur chacun de leurs éléments. –

+0

@MasterYoda C'est juste pour celui-ci –

+0

jeter un oeil à cette question: https://stackoverflow.com/questions/6468024/how-to-change-combobox-backgound-color-not-just-the-drop-down- liste-partie. Vous devez modifier la combobox vous-même pour y parvenir mais vous perdez le style 3D et gagnez plat. –

Répondre

1

Vous devez modifier le combobox vous-même pour y parvenir mais vous perdez le style 3D et gain plat.

Basé sur this réponse:

Modifier la combobox propriété DrawMode à OwnerDrawFixed et gérer l'événement DrawItem:

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. cette question pourrait aussi être utile pour vous: https://stackoverflow.com/questions/20812275/windows-form-combobox-custom-form-color :) –