ListView.DrawItem Olay
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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 olay işleyicisi DrawItem uygulaması 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 özelliği olarak ayarlandığında trueoluşturulurOwnerDraw. Sahip çizimi hakkında daha fazla bilgi için özellik başvurusu konusuna OwnerDraw bakın.
Olay DrawItem her ListView öğe için oluşabilir. View özelliği olarak View.DetailsDrawSubItem ayarlandığında ve DrawColumnHeader olayları da gerçekleşir. Bu durumda, arka plan gibi tüm öğelerde ortak olan öğeleri çizmek için olayı işleyebilir ve olayı işleyip DrawSubItem metin değerleri gibi tek tek alt öğeler için öğeler çizebilirsinizDrawItem. 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.
Uyarı
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 olaylara eşlik DrawSubItem etmeden olay gerçekleşir ve olay işleyicisinde DrawSubItem boyanan her şeyin bir 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.