ListBox.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í.
Nastane, když se změní vizuální aspekt nakresleného ListBox vlastníkem.
public:
event System::Windows::Forms::DrawItemEventHandler ^ DrawItem;
public event System.Windows.Forms.DrawItemEventHandler DrawItem;
public event System.Windows.Forms.DrawItemEventHandler? DrawItem;
member this.DrawItem : System.Windows.Forms.DrawItemEventHandler
Public Custom Event DrawItem As DrawItemEventHandler
Event Type
Příklady
Následující příklad kódu ukazuje, jak vytvořit položky nakreslené ListBox vlastníkem. Kód používá DrawMode vlastnost k určení, že nakreslené položky mají pevnou velikost a DrawItem událost pro provedení kreslení každé položky do objektu ListBox. Ukázkový kód používá vlastnosti a metody DrawItemEventArgs třídy předané jako parametr obslužné rutině události k vykreslení položek. Tento příklad vyžaduje, aby ListBox byl do formuláře přidán ovládací prvek s názvem listBox1
a aby DrawItem událost byla zpracována obslužnou rutinou události definovanou v ukázkovém kódu. Příklad také vyžaduje, aby byly do ListBox pole přidány položky s textem "Apple", "Orange" a "Plum" v tomto pořadí.
private ListBox ListBox1 = new ListBox();
private void InitializeListBox()
{
ListBox1.Items.AddRange(new Object[]
{ "Red Item", "Orange Item", "Purple Item" });
ListBox1.Location = new System.Drawing.Point(81, 69);
ListBox1.Size = new System.Drawing.Size(120, 95);
ListBox1.DrawMode = DrawMode.OwnerDrawFixed;
ListBox1.DrawItem += new DrawItemEventHandler(ListBox1_DrawItem);
Controls.Add(ListBox1);
}
private void ListBox1_DrawItem(object sender,
System.Windows.Forms.DrawItemEventArgs e)
{
// Draw the background of the ListBox control for each item.
e.DrawBackground();
// Define the default color of the brush as black.
Brush myBrush = Brushes.Black;
// Determine the color of the brush to draw each item based
// on the index of the item to draw.
switch (e.Index)
{
case 0:
myBrush = Brushes.Red;
break;
case 1:
myBrush = Brushes.Orange;
break;
case 2:
myBrush = Brushes.Purple;
break;
}
// Draw the current item text based on the current Font
// and the custom brush settings.
e.Graphics.DrawString(ListBox1.Items[e.Index].ToString(),
e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);
// If the ListBox has focus, draw a focus rectangle around the selected item.
e.DrawFocusRectangle();
}
Private WithEvents ListBox1 As New ListBox()
Private Sub InitializeListBox()
ListBox1.Items.AddRange(New Object() _
{"Red Item", "Orange Item", "Purple Item"})
ListBox1.Location = New System.Drawing.Point(81, 69)
ListBox1.Size = New System.Drawing.Size(120, 95)
ListBox1.DrawMode = DrawMode.OwnerDrawFixed
Controls.Add(ListBox1)
End Sub
Private Sub ListBox1_DrawItem(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DrawItemEventArgs) _
Handles ListBox1.DrawItem
' Draw the background of the ListBox control for each item.
e.DrawBackground()
' Define the default color of the brush as black.
Dim myBrush As Brush = Brushes.Black
' Determine the color of the brush to draw each item based on
' the index of the item to draw.
Select Case e.Index
Case 0
myBrush = Brushes.Red
Case 1
myBrush = Brushes.Orange
Case 2
myBrush = Brushes.Purple
End Select
' Draw the current item text based on the current
' Font and the custom brush settings.
e.Graphics.DrawString(ListBox1.Items(e.Index).ToString(), _
e.Font, myBrush, e.Bounds, StringFormat.GenericDefault)
' If the ListBox has focus, draw a focus rectangle around _
' the selected item.
e.DrawFocusRectangle()
End Sub
Poznámky
Tato událost je používána vlastníkem nakresleným ListBoxuživatelem . Událost je vyvolána pouze v případě, DrawMode že je vlastnost nastavena na DrawMode.OwnerDrawFixed
nebo DrawMode.OwnerDrawVariable
. Tuto událost můžete použít k provádění úkolů potřebných k kreslení položek v souboru ListBox. Pokud máte položku s proměnnou velikostí (pokud DrawMode je vlastnost nastavena na DrawMode.OwnerDrawVariable
), před kreslením položky je MeasureItem vyvolána událost. Pro událost můžete vytvořit obslužnou rutinu MeasureItem události, která určuje velikost položky, kterou chcete v obslužné rutině události nakreslit DrawItem .
Další informace o zpracování událostí najdete v tématu Zpracování a vyvolávání událostí.