Вставка элемента с определенным цветом в список - PullRequest
2 голосов
/ 25 января 2012

Я пытаюсь вставить элементы в список, но хочу раскрасить текст конкретных элементов в зависимости от целого числа.Как я могу вставить элемент с определенным цветом в список?

Спасибо!

Ответы [ 3 ]

1 голос
/ 25 января 2012

Описание

A ListBox Элемент может быть объектом любого типа.Это означает, что вы не можете установить цвет для элемента ListBox в момент их добавления.

Вам необходимо событие DrawItem.

Событие ListBox.DrawItem Происходит при изменении визуального аспекта нарисованного владельцем ListBox.

Образец

private void lstBox_DrawItem(object sender, _
      System.Windows.Forms.DrawItemEventArgs e)
{
//
// Draw the background of the ListBox control for each item.
// Create a new Brush and initialize to a Black colored brush
// by default.
//
e.DrawBackground();
Brush myBrush = Brushes.Black;
//
// Determine the color of the brush to draw each item based on 
// the index of the item to draw.
//
switch (e.Index)
{
    case 0:
        myBrush = Brushes.Red;
        break;
    case 1:
        myBrush = Brushes.Orange;
        break;
    case 2:
        myBrush = Brushes.Purple;
        break;
}
//
// Draw the current item text based on the current 
// Font and the custom brush settings.
//
e.Graphics.DrawString(((ListBox)sender).Items[e.Index].ToString(), 
    e.Font, myBrush,e.Bounds,StringFormat.GenericDefault);
//
// If the ListBox has focus, draw a focus rectangle 
// around the selected item.
//
e.DrawFocusRectangle();
}

Дополнительная информация

1 голос
/ 25 января 2012

Установите DrawMode в OwnerDrawFixed вашего элемента управления Listbox.и связать с ним обработчик события listBox_DrawItem элемент рисования списка

private void listBox_DrawItem(object sender, DrawItemEventArgs e)
{
    e.DrawBackground();
    Graphics yourObj = e.Graphics;

    yourObj .FillRectangle(new SolidBrush(Color.Red), e.Bounds);

    e.DrawFocusRectangle();
}
0 голосов
/ 25 января 2012

Может быть, этот код даст вам некоторое представление ...

                listView1.Items.Clear();
                int k = 0;
                foreach (Player p in players)
                {
                    ListViewItem lvitem = new ListViewItem();
                    lvitem.Text = p.name;
                    lvitem.BackColor = p.color;
                    listView1.Items.Add(lvitem);

                    k++;
                }

Игрок - это класс.Имеет название и цвет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...