ListView.DrawItem Evento

Definición

Se produce cuando se dibuja un control ListView y el valor de la propiedad OwnerDraw se ha establecido en 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

Ejemplos

En el ejemplo de código siguiente se proporciona una implementación de un DrawItem controlador de eventos. Para obtener el ejemplo completo, consulte el tema de OwnerDraw referencia.

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

Comentarios

Este evento permite personalizar la apariencia de un control mediante el ListView dibujo del propietario. Solo se genera cuando la OwnerDraw propiedad se establece en true. Para obtener más información sobre el dibujo del propietario, vea el tema de OwnerDraw referencia de propiedades.

El DrawItem evento puede producirse para cada ListView elemento. Cuando la View propiedad se establece View.Detailsen , también se producen los DrawSubItem eventos y DrawColumnHeader . En este caso, puede controlar el DrawItem evento para dibujar elementos comunes a todos los elementos, como el fondo, y controlar el DrawSubItem evento para dibujar elementos para subelementos individuales, como valores de texto. También puede dibujar todos los elementos del ListView control usando solo uno de los dos eventos, aunque esto puede ser menos conveniente. Para dibujar encabezados de columna en la vista de detalles, debe controlar el DrawColumnHeader evento.

Nota

Debido a un error en el control Win32 subyacente, el DrawItem evento se produce sin eventos complementarios DrawSubItem una vez por fila en la vista de detalles cuando el puntero del mouse se mueve sobre la fila, lo que hace que cualquier elemento pintado en un DrawSubItem controlador de eventos se pinte por un fondo personalizado dibujado en un DrawItem controlador de eventos. Vea el ejemplo del OwnerDraw tema de referencia para obtener una solución alternativa que invalida cada fila cuando se produce el evento adicional. Una solución alternativa consiste en colocar todo el código de dibujo personalizado en un DrawSubItem controlador de eventos y pintar el fondo de todo el elemento (incluidos subelementos) solo cuando el DrawListViewSubItemEventArgs.ColumnIndex valor es 0.

Para obtener más información sobre el manejo de eventos, consulte controlar y provocar eventos.

Se aplica a

Consulte también