Я хочу изменить цвет выбранного элемента в списке на определенное значение ARGB.
Когда он не выбран, он показывает ForeColor, который я определил в свойствах моего listBox.
Но что бы я ни пытался, это либо установка кисти на предопределенный цвет (белый, зеленый, что угодно),
изменение цвета, когда выбран и не выбран для обоих в том же цвете ...
или это не меняется вообще.
Решения, которые я вижу в stackoverflow, основаны на XAML, но я использую Winforms C # .NET, так что это не вариант.
Мне удалось создать собственный список ListBox, уже используя OwnerDrawFixed в качестве DrawMode и пользовательский DrawItem, предопределенный следующим образом:
{
SolidBrush myBrushBack = new SolidBrush(Color.FromArgb(255, 42, 42, 42));
SolidBrush myBrushFore = new SolidBrush(Color.FromArgb(255, 62, 182, 86));
if (e.Index < 0) return;
e.DrawBackground();
Graphics g = e.Graphics;
Brush brush = ((e.State & DrawItemState.Selected) == DrawItemState.Selected) ?
myBrushBack : new SolidBrush(e.BackColor);
myBrushFore : new SolidBrush(e.ForeColor);
g.FillRectangle(brush, e.Bounds);
SizeF size = e.Graphics.MeasureString(listBoxTracks.ToString(), e.Font);
e.Graphics.DrawString(listBoxTracks.Items[e.Index].ToString(), e.Font,
new SolidBrush(e.ForeColor), e.Bounds.Left + (e.Bounds.Width / 29 - size.Width / 39), e.Bounds.Top + (e.Bounds.Height / 2 - size.Height / 2), StringFormat.GenericDefault);
e.DrawFocusRectangle();
}
Этот код не дает мне нужный мне зеленый цвет + он меняет выбранный и не выбранный цвет текста для обоих:
e.Graphics.DrawString(listBoxTracks.Items[e.Index].ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault);
Как себя ведет сейчас: https://imgur.com/a/VvhDjqQ
Как я хочу, чтобы он вел себя: https://imgur.com/a/IqNT70p