ListView.DrawItem Událost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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í.