Используется winforms
Есть listbox1 заполненный из базы 1, затем берется элемент из другой базы 2, и нужно найти элемент в listbox1 и если он есть изменить его цвет.
например:
long) пользователей -нужный цвет в listbox1(без цвета) long) -нужный цвет в listbox1(красный)long) сотрудников -нужный цвет в listbox1(жёлтый)с начало выводятся в listbox все id затем раскрашиваются или раскрашиваются в момент вывода
вывод в listbox сейчас
BeginInvoke(new Action(() => listBox4.Items.Add("id"+idPip[i1])));
Попробую перевести англоязычный ответ
Один из способов сделать то, что вы хотите, это установить 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);
}
}
Результат
Сборка персонального компьютера от Artline: умный выбор для современных пользователей