Partilhar via


ListView.DrawItem Evento

Definição

Ocorre quando um ListView é desenhado e a propriedade OwnerDraw é definida como 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 

Tipo de evento

Exemplos

O exemplo de código a seguir fornece uma implementação de um DrawItem manipulador de eventos. Para obter 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

Comentários

Este evento permite personalizar a aparência de um controle ListView usando o desenho do proprietário. Ele é gerado somente quando a OwnerDraw propriedade é definida truecomo . Para obter mais informações sobre o desenho do proprietário, consulte o tópico de referência de OwnerDraw propriedade.

O DrawItem evento pode ocorrer para cada ListView item. Quando a View propriedade é definida como View.Details, os DrawSubItem eventos e DrawColumnHeader também ocorrem. Nesse caso, você pode manipular o DrawItem evento para desenhar elementos comuns a todos os itens, como a tela de fundo, e manipular o DrawSubItem evento para desenhar elementos para subitens individuais, como valores de texto. Você também pode desenhar todos os itens no ListView controle usando apenas um dos dois eventos, embora isso possa ser menos conveniente. Para desenhar cabeçalhos de coluna na exibição de detalhes, você deve manipular o DrawColumnHeader evento.

Observação

Devido a um bug no controle Win32 subjacente, o DrawItem evento ocorre sem acompanhar DrawSubItem eventos uma vez por linha na exibição de detalhes quando o ponteiro do mouse se move sobre a linha, fazendo com que qualquer coisa pintada em um DrawSubItem manipulador de eventos seja pintada por um plano de fundo personalizado desenhado em um DrawItem manipulador de eventos. Consulte o exemplo no OwnerDraw tópico de referência para obter uma solução alternativa que invalida cada linha quando o evento extra ocorre. Uma solução alternativa é colocar todo o código de desenho personalizado em um DrawSubItem manipulador de eventos e pintar a tela de fundo para todo o item (incluindo subitens) somente quando o DrawListViewSubItemEventArgs.ColumnIndex valor for 0.

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

Aplica-se a

Confira também