Я пытаюсь нарисовать элементы, которые заканчиваются на нем символом *
красным (и удалите этот символ *
), и нарисуйте другие элементы черным цветом.
это мой код:
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground() ; //Draw our regular background
if (Microsoft.VisualBasic.Strings.Right(listBox1.Items[e.Index].ToString(), 1) == "*")
{
e.Graphics.DrawString(Microsoft.VisualBasic.Strings.Mid(listBox1.Items[e.Index].ToString(),1,listBox1.Items[e.Index].ToString().Length - 1), e.Font, Brushes.Red, e.Bounds); //Draw the item text in red!
}
else
{
e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, Brushes.Black, e.Bounds); //Draw the item text in its regular color
}
}
Также DrawMode
свойство списка имеет значение OwnerDrawVariable
.
Мой код работает нормально, когда шрифт списка является шрифтом по умолчанию.
Но когда я изменяю размер шрифта с 8,25 (размер по умолчанию) на 14, половина текста рисуется в списке.как это:
Но с размером шрифта по умолчанию все правильно.
В чем проблема?