Надеюсь, это поможет кому-то в будущем, поскольку приведенный выше код помог мне, но не на 100%
У меня все еще были следующие проблемы:- когда я выбрал другой индекс, новый выбранный индекс также будет выделен красным цветом.- когда я изменил размер шрифта списка, выделенная область будет маленькой.
Ниже исправлена эта проблема
- измените DrawMode на ownerdrawvariable
- создайте событие MeasurItem и DrawItem для списка
private void lstCartOutput_MeasureItem(object sender, MeasureItemEventArgs e)
{
// Cast the sender object back to ListBox type.
ListBox listBox = (ListBox)sender;
e.ItemHeight = listBox.Font.Height;
}
private void lstCartOutput_DrawItem(object sender, DrawItemEventArgs e)
{
ListBox listBox = (ListBox)sender;
e.DrawBackground();
Brush myBrush = Brushes.Black;
if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
{
myBrush = Brushes.Red;
e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(0, 64, 64)), e.Bounds);
}
else
{
e.Graphics.FillRectangle(Brushes.White, e.Bounds);
}
e.Graphics.DrawString(listBox.Items[e.Index].ToString(),e.Font, myBrush, e.Bounds);
e.DrawFocusRectangle();
}
Я также ссылался на веб-сайт MSDN .