ListView.DrawItem Kejadian
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
Jenis Acara
Contoh
Contoh kode berikut menyediakan implementasi DrawItem penanganan aktivitas. Untuk contoh lengkapnya, lihat OwnerDraw topik referensi.
// 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
Keterangan
Kejadian ini memungkinkan Anda menyesuaikan tampilan ListView kontrol menggunakan gambar pemilik. Ini dinaikkan hanya ketika OwnerDraw properti diatur ke true
. Untuk informasi selengkapnya tentang gambar pemilik, lihat OwnerDraw topik referensi properti.
Peristiwa DrawItem dapat terjadi untuk setiap ListView item. View Ketika properti diatur ke View.Details, DrawSubItem peristiwa dan DrawColumnHeader juga terjadi. Dalam hal ini, Anda dapat menangani DrawItem peristiwa untuk menggambar elemen yang umum untuk semua item, seperti latar belakang, dan menangani DrawSubItem peristiwa untuk menggambar elemen untuk subitem individual, seperti nilai teks. Anda juga dapat menggambar semua item dalam ListView kontrol hanya menggunakan salah satu dari dua peristiwa, meskipun ini mungkin kurang nyaman. Untuk menggambar header kolom dalam tampilan detail, Anda harus menangani peristiwa.DrawColumnHeader
Catatan
Karena bug dalam kontrol Win32 yang mendasar, DrawItem peristiwa terjadi tanpa menyertai DrawSubItem peristiwa sekali per baris dalam tampilan detail ketika penunjuk mouse bergerak di atas baris, menyebabkan apa pun yang dilukis dalam DrawSubItem penanganan aktivitas dilukis oleh latar belakang kustom yang digambar dalam DrawItem penanganan aktivitas. Lihat contoh dalam OwnerDraw topik referensi untuk solusi yang membatalkan setiap baris saat peristiwa tambahan terjadi. Solusi alternatif adalah menempatkan semua kode gambar kustom Anda dalam DrawSubItem penanganan aktivitas dan melukis latar belakang untuk seluruh item (termasuk subitem) hanya ketika nilainya DrawListViewSubItemEventArgs.ColumnIndex adalah 0.
Untuk informasi selengkapnya tentang menangani peristiwa, lihat Menangani dan Menaikkan Peristiwa.