Как изменить цвет фона выделения и цвет текста в ListBox'e?
Пробовал через DrawMode, но там цвет текста изменяет везде, а мне нужно поменять только у фокуса
Для этого нужно :
переопределить событие Drawitem
установить свойству DrawMode
значение DrawMode.OwnerDrawFixed
Пример обработчика события Drawitem
:
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index<0) return;
// задаем параметры для рисования текущего элемента
// Если элемент имеет состояние 'выбран' мы изменяем цвет его кисти бэкграунда на желтую,
//остальные параемтры оставим по умолчанию взятые из параметра `e`
if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
e = new DrawItemEventArgs(e.Graphics,
e.Font,
e.Bounds,
e.Index,
e.State ^ DrawItemState.Selected,
e.ForeColor,
Color.Yellow);// <- обратить внимание сюда
// Начинаем рисовать
// Рисуем Background для каждого элемента
e.DrawBackground();
// Рисуем текст для каждого элемента
e.Graphics.DrawString(listBox1.Items[e.Index].ToString(),e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault);
// если у текущеного элемента есть фокус, эта функция нарисует фокус
e.DrawFocusRectangle();
}
Вот еще один пример из документации https://msdn.microsoft.com/en-gb/library/system.windows.forms.drawmode(v=vs.110).aspx
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как реализовать паузу во время появления формы капчи, потом после ввода капчи, продолжение работы