Я хочу некоторый способ сделать пообещанное полужирное (первые два символа каждого объекта в поле списка), и ничто иное, что-то вроде этого:
01 автомобиль
02 дома
03 рынка
Что касается этих трех, будучи объектами в управлении полем списка, ВСЕГДА первые два символа, остальные не должны быть полужирными.
Есть ли какой-либо практический путь к тому, чтобы сделать так?
Данные:
запрос:
private void lstMaster_DrawItem(object sender, DrawItemEventArgs e)
{
//TEST
e.DrawBackground();
Brush myBrush = Brushes.Black;
Pen pen = new Pen(myBrush);
e.Graphics.DrawRectangle(pen, 0, 0, 10, 10); //BREAKPOINT HERE
e.Graphics.DrawString("aaa" + lstMaster.Items[e.Index].ToString(),
e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);
e.DrawFocusRectangle();
}
Это просто keept то же, никакой прямоугольник, никакой "AAA" или квадрат никакая достигнутая точка останова...
Возможно, вам нужно будет использовать событие DrawItem списка, и оттуда вы можете рисовать свои элементы, как хотите:
событие DrawItem в MSDN
Вот пример, в котором каждый элемент отрисовывается разным цветом:
private void ListBox1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
{
// Draw the background of the ListBox control for each item.
e.DrawBackground();
// Define the default color of the brush as black.
Brush myBrush = Brushes.Black;
// Determine the color of the brush to draw each item based
// on the index of the item to draw.
switch (e.Index)
{
case 0:
myBrush = Brushes.Red;
break;
case 1:
myBrush = Brushes.Orange;
break;
case 2:
myBrush = Brushes.Purple;
break;
}
// Draw the current item text based on the current Font
// and the custom brush settings.
e.Graphics.DrawString(ListBox1.Items[e.Index].ToString(),
e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);
// If the ListBox has focus, draw a focus rectangle around the selected item.
e.DrawFocusRectangle();
}
Согласно документации, вам также необходимо изменить свойство DrawMode списка, чтобы активировать event:
Это событие используется созданным владельцем ListBox. Событие возникает только в том случае, если для свойства DrawMode установлено значение DrawMode.OwnerDrawFixed или DrawMode.OwnerDrawVariable. Это событие можно использовать для выполнения задач, необходимых для рисования элементов в ListBox.
Я думаю, что вы можете использовать разметку HTML начиная с VS 2008, например, 01 автомобиль
для 01 автомобиль, для некоторого текста. Мне нужно будет проверить, применимо ли это к спискам.