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 OwnerDraw di 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 usando 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 sulla 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 per disegnare elementi comuni a tutti gli elementi, ad esempio lo sfondo e gestire l'evento DrawItemDrawSubItem per disegnare elementi per singoli elementi secondari, ad esempio i valori di testo. È anche possibile disegnare tutti gli elementi nel ListView controllo usando solo uno dei due eventi, anche se questo potrebbe essere meno pratico. Per disegnare intestazioni di colonna nella visualizzazione dei dettagli, è necessario gestire l'evento DrawColumnHeader .
Nota
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 che qualsiasi elemento dipinto in un gestore eventi venga dipinto da uno sfondo personalizzato disegnato in un DrawSubItemDrawItem 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.