2016-07-16 21 views
1

Ich habe ein kleines Problem in meinem Projekt, wie kann ich Vorder-Farbe des Textes ausgewählter Elemente in ListBox ändern. Ich kann alle Artikel von ListBox auswählen, aber ich weiß nicht, wie man die Vorderfarbe des Textes ausgewählter Artikel ändern kann.Wie ändere ich ForeColor von SelectedItem in ListBox

Dieser Code ist in meinem Projekt für ausgewählten listbox Artikel

for (int i = 0; i < lbProductsToBuy.Items.Count; i++) 
{ 
    lbProductsToBuy.SetSelected(i,true); 
} 
printreceiptToken1(); 
dataGridView67.Rows.Clear(); 

Dank verwenden. In diesen Bildern können Sie die Benutzeroberfläche meiner Anwendung sehen. image1 und image2. Sehen Sie sich dieses letzte Bild an, ich möchte die Vorfarbe dieser ausgewählten Elemente ändern.

+0

bitte hel; p mir deine setzen geben Sie mir die beste Lösung Dieses Problem dank –

Antwort

2

Sie können DrawMode Eigenschaft ListBox auf OwnerDrawFixed gesetzt und dann hanlde DrawItem Ereignis der Kontrolle und ziehen Gegenstände selbst:

private void listBox1_DrawItem(object sender, DrawItemEventArgs e) 
{ 
    var listBox = sender as ListBox; 
    var backColor = this.BackColor;   /*Default BackColor*/ 
    var textColor = this.ForeColor;   /*Default ForeColor*/ 
    var txt = listBox.GetItemText(listBox.Items[e.Index]); 
    if ((e.State & DrawItemState.Selected) == DrawItemState.Selected) 
    { 
     backColor = Color.RoyalBlue;  /*Seletion BackColor*/ 
     textColor = Color.Yellow;   /*Seletion ForeColor*/ 
    } 
    using (var brush = new SolidBrush(backColor)) 
     e.Graphics.FillRectangle(brush, e.Bounds); 
    TextRenderer.DrawText(e.Graphics, txt, listBox.Font, e.Bounds, textColor, 
     TextFormatFlags.VerticalCenter | TextFormatFlags.Left); 
} 

enter image description here

+0

es funktioniert nicht für mich –

+1

** 1) ** Vielleicht haben Sie vergessen, 'DrawMode' Eigenschaft von' ListBox' zu 'OwnerDrawFixed' ** 2) ** Vielleicht vergessen Sie,' listBox1_DrawItem' Methode an 'DrawItem anzuhängen 'Ereignis deines 'ListBox' –

+0

Lassen Sie mich wissen, wenn Sie Fragen zur Antwort haben. –