Как изменить цвет текста элемента listbox

196
19 декабря 2018, 17:00

Используется winforms

Есть listbox1 заполненный из базы 1, затем берется элемент из другой базы 2, и нужно найти элемент в listbox1 и если он есть изменить его цвет.

например:

  • база 1 содержит id (long) пользователей -нужный цвет в listbox1(без цвета)
  • база 2 содержит бан id (long) -нужный цвет в listbox1(красный)
  • база 3 содержит id (long) сотрудников -нужный цвет в listbox1(жёлтый)

с начало выводятся в listbox все id затем раскрашиваются или раскрашиваются в момент вывода

вывод в listbox сейчас

BeginInvoke(new Action(() => listBox4.Items.Add("id"+idPip[i1]))); 
Answer 1

Попробую перевести англоязычный ответ

Один из способов сделать то, что вы хотите, это установить DrawMode как OwnerDrawFixed. После этого вы можете подписаться на событие DrawItem и вручную нарисовать каждый нужный вам элемент.

Пример кода:

class MyForm : Form
{
    public MyForm()
    {
        var lb = new ListBox();
        var data = Enumerable.Range(0, 10).ToArray();
        lb.DataSource = data;
        lb.DrawMode = DrawMode.OwnerDrawFixed;
        lb.DrawItem += (sender, e) => {
            e.DrawBackground();
            Graphics g = e.Graphics;
            var val = (int)lb.Items[e.Index];
            g.FillRectangle(new SolidBrush(val %2 == 0 ? Color.Silver : Color.LightGreen), e.Bounds);
            g.DrawString(val.ToString(), e.Font, new SolidBrush(e.ForeColor), e.Bounds);
            e.DrawFocusRectangle();
        };
        this.Controls.Add(lb);      
    }
}

Результат

READ ALSO
Библиотека для чтения shapefile shp shx. C#

Библиотека для чтения shapefile shp shx. C#

Всем доброго времени суток!

145
Вывести категории и товары на одной странице

Вывести категории и товары на одной странице

Мне нужно вывести категории и товары на одной странице, как здесь - http://bavariabavaria-rest

201
Картинка в ссылке

Картинка в ссылке

Стоит такая задачка на Joomla сделать так чтоб при отправке статьи или какой другой либо ссылке ведущей на нужный мне сайт в скайпе появлялась...

140
Как поменять язык форматированного datetime в Laravel

Как поменять язык форматированного datetime в Laravel

столкнулся с проблемой рендеринга языка форматированного datetime в Laravel тоесть по-умолчанию если использовать например $personal->created_at->format('d B Y') то будет...

141