ListBox.DrawItem Olay

Tanım

Sahip tarafından çizilen ListBox görsel bir özellik değiştiğinde gerçekleşir.

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 

Olay Türü

Örnekler

Aşağıdaki kod örneği, sahip tarafından çizilen ListBox öğelerin nasıl oluşturulacağını gösterir. Kod, çizilen öğelerin sabit boyutlu olduğunu ve DrawItem her öğenin ListBoxiçine çizimini gerçekleştirmek için olayı belirtmek için özelliğini kullanırDrawMode. Örnek kod, öğeleri çizmek için olay işleyicisine parametre olarak geçirilen sınıfın özelliklerini ve yöntemlerini DrawItemEventArgs kullanır. Bu örnek, bir forma adlı listBox1 bir ListBox denetimin eklenmesini ve DrawItem olayın örnek kodda tanımlanan olay işleyicisi tarafından işlenmesini gerektirir. Örnek ayrıca öğesine bu sırada "Apple", "Orange" ve "Plum" metinleriyle birlikte eklenmesini ListBox gerektirir.

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

Açıklamalar

Bu olay sahip tarafından çizilen ListBoxtarafından kullanılır. Olay yalnızca özelliği veya DrawMode.OwnerDrawVariableolarak ayarlandığında DrawMode.OwnerDrawFixed oluşturulurDrawMode. bu olayı kullanarak içindeki ListBoxöğeleri çizmek için gereken görevleri gerçekleştirebilirsiniz. Değişken boyutlu bir öğeniz varsa ( DrawMode özellik olarak ayarlandığında DrawMode.OwnerDrawVariable), bir öğe MeasureItem çizmeden önce olay tetikler. Olayın olay işleyicisinde MeasureItem çizeceğiniz öğenin boyutunu belirtmek üzere olay için DrawItem bir olay işleyicisi oluşturabilirsiniz.

Olayları işleme hakkında daha fazla bilgi için bkz. Olayları İşleme ve Oluşturma.

Şunlara uygulanır

Ayrıca bkz.