ListView.DrawItem Gebeurtenis
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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
Gebeurtenistype
Voorbeelden
Het volgende codevoorbeeld biedt een implementatie van een DrawItem gebeurtenis-handler. Zie het naslagonderwerp voor het OwnerDraw volledige voorbeeld.
// 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
Opmerkingen
Met deze gebeurtenis kunt u het uiterlijk van een ListView besturingselement aanpassen met behulp van een eigenaartekening. Deze wordt alleen verhoogd wanneer de OwnerDraw eigenschap is ingesteld op true. Zie het OwnerDraw naslagonderwerp over eigenschappen voor meer informatie over het tekenen van eigenaar.
De DrawItem gebeurtenis kan plaatsvinden voor elk ListView item. Wanneer de View eigenschap is ingesteld op View.Details, vinden de DrawSubItem en DrawColumnHeader gebeurtenissen ook plaats. In dit geval kunt u de DrawItem gebeurtenis afhandelen om elementen te tekenen die gebruikelijk zijn voor alle items, zoals de achtergrond, en de DrawSubItem gebeurtenis afhandelen om elementen te tekenen voor afzonderlijke subitems, zoals tekstwaarden. U kunt ook alle items in het ListView besturingselement tekenen met slechts één van de twee gebeurtenissen, hoewel dit misschien minder handig is. Als u kolomkoppen wilt tekenen in de detailweergave, moet u de DrawColumnHeader gebeurtenis afhandelen.
Note
Vanwege een fout in het onderliggende Win32-besturingselement wordt de gebeurtenis uitgevoerd zonder DrawItem dat de DrawSubItem gebeurtenis eenmaal per rij in de detailweergave wordt begeleid wanneer de muisaanwijzer over de rij beweegt, waardoor alles wat in een DrawSubItem gebeurtenishandler is geschilderd, wordt geschilderd door een aangepaste achtergrond die in een DrawItem gebeurtenis-handler wordt getekend. Zie het voorbeeld in het OwnerDraw naslagonderwerp voor een tijdelijke oplossing die elke rij ongeldig maakt wanneer de extra gebeurtenis plaatsvindt. Een alternatieve oplossing is om al uw aangepaste tekencode in een DrawSubItem gebeurtenishandler te plaatsen en de achtergrond voor het hele item (inclusief subitems) alleen te schilderen als de DrawListViewSubItemEventArgs.ColumnIndex waarde 0 is.
Zie Gebeurtenissen verwerken en genereren voor meer informatie over het afhandelen van gebeurtenissen.