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

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


ListView.DrawItem Событие

Определение

Происходит при прорисовке элемента управления ListView, если для свойства OwnerDraw установлено значение true.

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

Тип события

Примеры

В следующем примере кода представлена реализация обработчика DrawItem событий. Полный пример см. в справочном OwnerDraw разделе.

// Draws the backgrounds for entire ListView items.
private void listView1_DrawItem(object sender,
    DrawListViewItemEventArgs e)
{
    if ((e.State & ListViewItemStates.Selected) != 0)
    {
        // Draw the background and focus rectangle for a selected item.
        e.Graphics.FillRectangle(Brushes.Maroon, e.Bounds);
        e.DrawFocusRectangle();
    }
    else
    {
        // Draw the background for an unselected item.
        using (LinearGradientBrush brush =
            new LinearGradientBrush(e.Bounds, Color.Orange,
            Color.Maroon, LinearGradientMode.Horizontal))
        {
            e.Graphics.FillRectangle(brush, e.Bounds);
        }
    }

    // Draw the item text for views other than the Details view.
    if (listView1.View != View.Details)
    {
        e.DrawText();
    }
}

Комментарии

Это событие позволяет настроить внешний ListView вид элемента управления с помощью документа владельца. Он возникает только в том случае, если свойству OwnerDraw присвоено значение true. Дополнительные сведения о рисовании владельца см. в разделе справочника по свойствам OwnerDraw .

Событие DrawItem может возникнуть для каждого ListView элемента. Если свойству View присвоено значение View.Details, DrawSubItem также происходят события и DrawColumnHeader . В этом случае можно обработать DrawItem событие для рисования элементов, общих для всех элементов, таких как фон, и обработать DrawSubItem событие для рисования элементов для отдельных вложенных элементов, таких как текстовые значения. Вы также можете рисовать все элементы в элементе ListView управления, используя только одно из двух событий, хотя это может быть менее удобным. Чтобы нарисовать заголовки столбцов в представлении сведений, необходимо обработать DrawColumnHeader событие .

Примечание

Из-за ошибки в базовом элементе управления DrawItem Win32 событие происходит без сопутствующих DrawSubItem событий один раз в строке в представлении сведений, когда указатель мыши перемещается над строкой, в результате чего все, что окрашено в DrawSubItem обработчике событий, будет закрашено пользовательским фоном, нарисованным в обработчике DrawItem событий. См. пример в справочном OwnerDraw разделе для обходного решения, которое делает каждую строку недействительной при возникновении дополнительного события. Альтернативным решением является размещение всего пользовательского кода рисования в DrawSubItem обработчике событий и рисование фона для всего элемента (включая вложенные элементы) только в том случае, если DrawListViewSubItemEventArgs.ColumnIndex значение равно 0.

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

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

Продукт Версии
.NET Framework 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

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