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


ListView.DrawItem Событие

Определение

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

public:
 event System::Windows::Forms::DrawListViewItemEventHandler ^ DrawItem;
public event System.Windows.Forms.DrawListViewItemEventHandler DrawItem;
public event System.Windows.Forms.DrawListViewItemEventHandler? DrawItem;
member this.DrawItem : System.Windows.Forms.DrawListViewItemEventHandler 
Public Custom Event DrawItem As DrawListViewItemEventHandler 

Тип события

Примеры

В следующем примере кода представлена реализация обработчика 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();
    }
}
' Draws the backgrounds for entire ListView items.
Private Sub listView1_DrawItem(ByVal sender As Object, _
    ByVal e As DrawListViewItemEventArgs) _
    Handles listView1.DrawItem

    If Not (e.State And ListViewItemStates.Selected) = 0 Then

        ' Draw the background for a selected item.
        e.Graphics.FillRectangle(Brushes.Maroon, e.Bounds)
        e.DrawFocusRectangle()

    Else

        ' Draw the background for an unselected item.
        Dim brush As New LinearGradientBrush(e.Bounds, Color.Orange, _
            Color.Maroon, LinearGradientMode.Horizontal)
        Try
            e.Graphics.FillRectangle(brush, e.Bounds)
        Finally
            brush.Dispose()
        End Try

    End If

    ' Draw the item text for views other than the Details view.
    If Not Me.listView1.View = View.Details Then
        e.DrawText()
    End If

End Sub

Комментарии

Это событие позволяет настроить внешний 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.

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

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

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