Sdílet prostřednictvím


ListView.DrawItem Událost

Definice

Nastane při vykreslení ListView a OwnerDraw vlastnost je nastavena na 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 

Event Type

Příklady

Následující příklad kódu poskytuje implementaci DrawItem obslužné rutiny události. Úplný příklad najdete v referenčním OwnerDraw tématu.

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

Poznámky

Tato událost umožňuje přizpůsobit vzhled ListView ovládacího prvku pomocí výkresu vlastníka. Vyvolá se pouze v případech, kdy OwnerDraw je vlastnost nastavena na truehodnotu . Další informace o výkresu vlastníka naleznete v tématu s referenčními OwnerDraw informacemi o vlastnosti.

K DrawItem události může dojít pro každou ListView položku. Pokud je vlastnost nastavena View na View.Details, a DrawSubItemDrawColumnHeader události také dojít. V tomto případě můžete zpracovat DrawItem událost, která nakreslí prvky společné pro všechny položky, jako je pozadí, a zpracovat DrawSubItem událost kreslení prvků pro jednotlivé dílčí položky, jako jsou textové hodnoty. Všechny položky v ovládacím ListView prvku můžete také kreslit pouze pomocí jedné ze dvou událostí, i když to může být méně pohodlné. Pokud chcete v zobrazení podrobností nakreslit záhlaví sloupců, musíte zpracovat DrawColumnHeader událost.

Poznámka:

Vzhledem k chybě v podkladovém ovládacím prvku DrawItem Win32 dojde k události bez doprovodných DrawSubItem událostí jednou za řádek v zobrazení podrobností, když se ukazatel myši přesune přes řádek, což způsobí, že cokoli malovaného v DrawSubItem obslužné rutině události bude vykresleno vlastním pozadím nakresleným v obslužné rutině DrawItem události. V příkladu v referenčním OwnerDraw tématu najdete alternativní řešení, které zneplatní každý řádek, když dojde k další události. Alternativním alternativním řešením je umístit veškerý vlastní kód výkresu DrawSubItem do obslužné rutiny události a nakreslit pozadí celé položky (včetně dílčích položek) pouze v případě, DrawListViewSubItemEventArgs.ColumnIndex že je hodnota 0.

Další informace o zpracování událostí naleznete v tématu Zpracování a vyvolávání událostí.

Platí pro

Viz také