Прочитать на английском

Поделиться через


ListBox.DrawItem Событие

Определение

Происходит при изменении вида элемента ListBox, рисуемого владельцем.

public event System.Windows.Forms.DrawItemEventHandler DrawItem;
public event System.Windows.Forms.DrawItemEventHandler? DrawItem;

Тип события

Примеры

В следующем примере кода показано, как создавать элементы, нарисованные ListBox владельцем. Код использует DrawMode свойство , чтобы указать, что нарисованные элементы имеют фиксированный размер, а DrawItem событие для выполнения рисования каждого элемента в ListBox. В примере кода используются свойства и методы класса , DrawItemEventArgs передаваемые в качестве параметра обработчику событий для рисования элементов. В этом примере требуется, чтобы ListBox элемент управления с именем listBox1 был добавлен в форму, а DrawItem событие обрабатывалось обработчиком событий, определенным в примере кода. В этом примере также требуется, чтобы элементы были добавлены в ListBox с текстом "Apple", "Orange" и "Plum" в указанном порядке.

private ListBox ListBox1 = new ListBox();
private void InitializeListBox()
{
    ListBox1.Items.AddRange(new Object[] 
        { "Red Item", "Orange Item", "Purple Item" });
    ListBox1.Location = new System.Drawing.Point(81, 69);
    ListBox1.Size = new System.Drawing.Size(120, 95);
    ListBox1.DrawMode = DrawMode.OwnerDrawFixed;
    ListBox1.DrawItem += new DrawItemEventHandler(ListBox1_DrawItem);
    Controls.Add(ListBox1);
}

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

Комментарии

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

Дополнительные сведения об обработке событий см. в разделе Обработка и вызов событий.

Применяется к

Продукт Версии
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

См. также раздел