ListView.DrawItem Evento

Definição

Ocorre quando a ListView é desenhado e a OwnerDraw propriedade é definida para true.

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 

Tipo de Evento

Exemplos

O exemplo de código seguinte fornece uma implementação de um DrawItem gestor de eventos. Para o exemplo completo, consulte o OwnerDraw tópico de referência.

// 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

Observações

Este evento permite-lhe personalizar a aparência de um ListView controlo usando o desenho do proprietário. Só é aumentada quando a OwnerDraw propriedade está definida para true. Para mais informações sobre o desenho do proprietário, consulte o OwnerDraw tópico de referência de propriedade.

O DrawItem evento pode ocorrer para cada ListView item. Quando a View propriedade é definida para View.Details, os DrawSubItem eventos e DrawColumnHeader também ocorrem. Neste caso, pode gerir o DrawItem evento para desenhar elementos comuns a todos os itens, como o fundo, e tratar do DrawSubItem evento para desenhar elementos para subitens individuais, como valores de texto. Também podes desenhar todos os itens no ListView controlo usando apenas um dos dois eventos, embora isso possa ser menos conveniente. Para desenhar cabeçalhos de coluna na vista de detalhes, deve tratar do DrawColumnHeader evento.

Note

Devido a um bug no controlo Win32 subjacente, o DrawItem evento ocorre sem eventos acompanhantes DrawSubItem uma vez por linha na vista de detalhes quando o ponteiro do rato se move sobre a linha, fazendo com que tudo o que esteja pintado num DrawSubItem gestor de eventos seja pintado por um fundo personalizado desenhado num DrawItem gestor de eventos. Veja o exemplo no OwnerDraw tópico de referência para uma solução alternativa que invalida cada linha quando ocorre o evento extra. Uma alternativa alternativa é colocar todo o teu código de desenho personalizado num DrawSubItem gestor de eventos e pintar o fundo de todo o item (incluindo subitens) apenas quando o DrawListViewSubItemEventArgs.ColumnIndex valor for 0.

Para obter mais informações sobre como manipular eventos, consulte Manipulando e gerando eventos.

Aplica-se a

Ver também