Одно слово, выделенное жирным шрифтом внутри текста в элементе управления winform - PullRequest
6 голосов
/ 17 февраля 2010

Я хочу каким-то образом сделать данное слово жирным (первые два символа каждого элемента в списке), и ничего больше, что-то вроде этого:

01 машина
02 house
03 market

Что касается этих трех элементов, являющихся элементами в элементе управления списком, ВСЕГДА первые два символа, остальные не должны быть выделены жирным шрифтом.

Есть ли практический способ сделать это?

Данные:

  • Visual Studio 2008
  • .NET 3.5

запрос:

    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();

    }

Он просто хранит то же самое, без прямоугольника, без "AAA" или квадрата, без достижения точки останова ...

Ответы [ 2 ]

6 голосов
/ 17 февраля 2010

Возможно, вам нужно будет использовать событие 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 списка для запуска события:

Это событие используется нарисованным владельцем ListBox. Событие возникает только в том случае, если для свойства DrawMode установлено значение DrawMode.OwnerDrawFixed или DrawMode.OwnerDrawVariable. Это событие можно использовать для выполнения задач, необходимых для рисования элементов в ListBox.

0 голосов
/ 17 февраля 2010

Я думаю, что вы можете использовать HTML-разметку с VS 2008 года, например. <b>01</b> car для 01 автомобиля, для некоторого текста. Мне нужно проверить, относится ли это к спискам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...