ListView.DrawItem Olay

Tanım

bir ListView çizildiğinde ve OwnerDraw özelliği olarak trueayarlandığında gerçekleşir.

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 

Olay Türü

Örnekler

Aşağıdaki kod örneği, bir DrawItem olay işleyicisinin uygulamasını sağlar. Tam örnek için başvuru konusuna OwnerDraw bakın.

// 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

Açıklamalar

Bu olay, sahip çizimini kullanarak denetimin ListView görünümünü özelleştirmenize olanak tanır. Yalnızca OwnerDraw özelliği olarak ayarlandığında trueoluşturulur. Sahip çizimi hakkında daha fazla bilgi için özellik başvurusu konusuna OwnerDraw bakın.

Olay DrawItem her ListView öğe için gerçekleşebilir. View özelliği olarak View.DetailsDrawSubItem ayarlandığında ve DrawColumnHeader olayları da gerçekleşir. Bu durumda, arka plan gibi tüm öğelerde ortak öğeleri çizmek için olayı işleyebilir DrawItem ve olayı işleyebilir DrawSubItem ve metin değerleri gibi tek tek alt öğeler için öğeler çizebilirsiniz. Ayrıca, denetimdeki ListView tüm öğeleri iki olaydan yalnızca birini kullanarak çizebilirsiniz, ancak bu daha az kullanışlı olabilir. Ayrıntılar görünümünde sütun üst bilgileri çizmek için olayı işlemeniz DrawColumnHeader gerekir.

Not

Temel alınan Win32 denetimindeki bir hata nedeniyle, DrawItem fare işaretçisi satırın üzerine geldiğinde ayrıntılar görünümünde her satırda bir kez olaylara eşlik DrawSubItem etmeden olay gerçekleşir ve olay işleyicisinde DrawSubItem boyanan her şeyin olay işleyicisinde DrawItem çizilen özel bir arka plan tarafından boyanmasına neden olur. Ek olay gerçekleştiğinde OwnerDraw her satırı geçersiz kıldığını belirten bir geçici çözüm için başvuru konu başlığındaki örne bakın. Alternatif bir geçici çözüm, tüm özel çizim kodunuzu bir DrawSubItem olay işleyicisine yerleştirmek ve yalnızca değer 0 olduğunda DrawListViewSubItemEventArgs.ColumnIndex öğenin tamamının arka planını (alt öğeler dahil) boyamaktır.

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

Şunlara uygulanır

Ayrıca bkz.