Sdílet prostřednictvím


ListView.DrawItem Událost

Definice

Vyvolá se při vykreslení ListView objektu OwnerDraw a vlastnost je nastavena na truehodnotu .

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 obslužné rutiny DrawItem události. Úplný příklad najdete v OwnerDraw tématu s referenčními informacemi.

// 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 ovládacího prvku pomocí výkresu ListView vlastníka. Vyvolá se pouze v OwnerDraw případech, kdy je vlastnost nastavena na truehodnotu . Další informace o výkresu vlastníka najdete v tématu s referenčními informacemi o OwnerDraw vlastnosti.

Událost DrawItem může nastat pro každou ListView položku. Když je vlastnost nastavená View na View.Details, dojde také k událostem DrawSubItem a DrawColumnHeader . V takovém případě můžete událost zpracovat DrawItem tak, že nakreslíte prvky společné pro všechny položky, například pozadí, a zpracovat DrawSubItem událost a nakreslit prvky pro jednotlivé podřízené položky, jako jsou textové hodnoty. Můžete také nakreslit všechny položky v ovládacím ListView prvku pomocí pouze jedné ze dvou událostí, i když to může být méně pohodlné. Pokud chcete nakreslit záhlaví sloupců v zobrazení podrobností, musíte událost zpracovat DrawColumnHeader .

Poznámka

Z důvodu chyby 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é 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é ruší platnost každého řádku, když dojde k další události. Alternativním řešením je vložit veškerý vlastní kód výkresu do obslužné DrawSubItem rutiny události a vykreslit pozadí pro celou položku (včetně podřízených položek) pouze v případě, že DrawListViewSubItemEventArgs.ColumnIndex je hodnota 0.

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

Platí pro

Viz také