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 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 true
oluş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.