2016-07-16 2 views
1

У меня возникла небольшая проблема в моем проекте, как я могу изменить передний цвет текста выбранных элементов в ListBox. Я могу выбрать все элементы ListBox, но я не знаю, как изменить передний цвет текста выбранных элементов.Как изменить ForeColor SelectedItem в ListBox

Этот код я использую в моем проекте для выбора элементов ListBox

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

Спасибо. На этих изображениях вы можете видеть пользовательский интерфейс моего приложения. image1 и image2. Посмотрите это последнее изображение, я хочу изменить выбранные элементы переднего цвета.

+0

пожалуйста Хель; р мне положить ваш дайте мне лучшее решение эта проблема спасибо –

ответ

2

Вы можете установить DrawMode свойство ListBox к OwnerDrawFixed, а затем hanlde DrawItem событие управления и сделать вещи сами:

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

это не работает для меня –

+1

** 1) ** Возможно, вы забыли свойство 'DrawMode'' ListBox' 'OwnerDrawFixed' ** 2) ** Возможно, вы забудете добавить метод' listBox1_DrawItem' в 'DrawItem 'событие вашего 'ListBox' –

+0

Сообщите мне, если у вас есть вопросы по поводу ответа. –