ListView.DrawItem Evento
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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
Tipo evento
Esempio
Nell'esempio di codice seguente viene fornita un'implementazione di un DrawItem gestore eventi. Per l'esempio completo, vedere l'argomento di OwnerDraw riferimento.
// 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
Commenti
Questo evento consente di personalizzare l'aspetto di un ListView controllo utilizzando il disegno del proprietario. Viene generato solo quando la OwnerDraw proprietà è impostata su true. Per altre informazioni sul disegno del proprietario, vedere l'argomento di riferimento sulle OwnerDraw proprietà.
L'evento DrawItem può verificarsi per ogni ListView elemento. Quando la View proprietà è impostata su View.Details, si verificano anche gli DrawSubItem eventi e DrawColumnHeader . In questo caso, è possibile gestire l'evento DrawItem per disegnare elementi comuni a tutti gli elementi, ad esempio lo sfondo, e gestire l'evento DrawSubItem per disegnare elementi per singoli elementi secondari, ad esempio valori di testo. È anche possibile disegnare tutti gli elementi nel ListView controllo utilizzando solo uno dei due eventi, anche se questo può essere meno conveniente. Per disegnare intestazioni di colonna nella visualizzazione dettagli, è necessario gestire l'evento DrawColumnHeader .
Annotazioni
A causa di un bug nel controllo Win32 sottostante, l'evento DrawItem si verifica senza eventi accompagnati DrawSubItem una volta per riga nella visualizzazione dei dettagli quando il puntatore del mouse si sposta sulla riga, causando il disegno di qualsiasi elemento disegnato in un DrawSubItem gestore eventi da disegnare da uno sfondo personalizzato disegnato in un DrawItem gestore eventi. Vedere l'esempio nell'argomento OwnerDraw di riferimento per una soluzione alternativa che invalida ogni riga quando si verifica l'evento aggiuntivo. Una soluzione alternativa consiste nell'inserire tutto il codice di disegno personalizzato in un DrawSubItem gestore eventi e disegnare lo sfondo per l'intero elemento (inclusi gli elementi secondari) solo quando il DrawListViewSubItemEventArgs.ColumnIndex valore è 0.
Per ulteriori informazioni sulla gestione degli eventi, consultare gestione e generazione di eventi.