ListBox.DrawItem Ereignis
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Tritt ein, wenn sich ein Darstellungsaspekt eines Ownerdrawn-ListBox ändert.
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
Ereignistyp
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie Sie vom Besitzer gezeichnete ListBox Elemente erstellen. Der Code verwendet die DrawMode -Eigenschaft, um anzugeben, dass die gezeichneten Elemente eine feste Größe haben und das DrawItem Ereignis zum Ausführen der Zeichnung jedes Elements in den ListBox. Der Beispielcode verwendet die Eigenschaften und Methoden der Klasse, die DrawItemEventArgs als Parameter an den Ereignishandler übergeben werden, um die Elemente zu zeichnen. Dieses Beispiel erfordert, dass einem Formular ein ListBox Steuerelement mit dem Namen listBox1
hinzugefügt wurde und das DrawItem Ereignis von dem im Beispielcode definierten Ereignishandler behandelt wird. Das Beispiel erfordert auch, dass Elemente mit dem ListBox Text "Apple", "Orange" und "Plum" in dieser Reihenfolge hinzugefügt wurden.
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
Hinweise
Dieses Ereignis wird von einem besitzergezeichneten ListBoxverwendet. Das Ereignis wird nur ausgelöst, wenn die DrawMode -Eigenschaft auf DrawMode.OwnerDrawFixed
oder DrawMode.OwnerDrawVariable
festgelegt ist. Sie können dieses Ereignis verwenden, um die Aufgaben auszuführen, die zum Zeichnen von Elementen in der ListBoxerforderlich sind. Wenn Sie über ein Element mit variabler Größe verfügen (wenn die DrawMode Eigenschaft auf DrawMode.OwnerDrawVariable
festgelegt ist), bevor Sie ein Element zeichnen, wird das MeasureItem -Ereignis ausgelöst. Sie können einen Ereignishandler für das MeasureItem Ereignis erstellen, um die Größe des Elements anzugeben, das Sie in Ihrem Ereignishandler für das DrawItem Ereignis zeichnen möchten.
Weitere Informationen zur Behandlung von Ereignissen finden Sie unter behandeln und Auslösen von Ereignissen.