2014-01-05 7 views
1

Я хочу изменить цвет ListBox элементов. Код, который у меня есть, кажется, не работает. Он просто добавляет пространство имен класса к ListBox элементам.Как Цветные элементы ListBox?

class myListboxItem 
{ 
    public Color ItemColor { get; set; } 
    public string Message { get; set; } 

    public myListboxItem(Color c, string m) 
    { 
     ItemColor = c; 
     Message = m; 
    } 
} 

код для добавления элемента в ListBox:

listBox1.Items.Add(new myListboxItem(Color.Red,"SKIPPED: " + partThreeOfPath)); 

Это добавляет элемент в ListBox, в черном AddFoldersToClientFolder.myListboxItem.

ответ

5

Вы можете использовать DrawItem событие ListBox:

private void listBox1_DrawItem(object sender, DrawItemEventArgs e) 
{ 
    var item = (myListboxItem)listBox1.Items[e.Index]; 
    e.DrawBackground(); 

    using (var brush = new SolidBrush(item.ItemColor)) 
     e.Graphics.DrawString(item.Message, listBox1.Font, brush, e.Bounds); 
} 

Примечание: Вы также должны установить DrawMode из ListBox в DrawMode.OwnerDrawFixed или DrawMode.OwnerDrawVariable

+0

Спасибо вам ответить, я получаю сообщение об ошибке говорящее индекс не действует? Также я не понимаю, как применить это к определенному элементу, а не ко всем элементам списка? –

Смежные вопросы