Questa documentazione è stata archiviata e non viene gestita.

Metodo ListBox.OnDrawItem

Genera l'evento DrawItem.

Spazio dei nomi: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)

protected virtual void OnDrawItem (
	DrawItemEventArgs e
)
protected void OnDrawItem (
	DrawItemEventArgs e
)
protected function OnDrawItem (
	e : DrawItemEventArgs
)

Parametri

e

Oggetto DrawItemEventArgs che contiene i dati dell'evento.

La generazione di un evento richiama il gestore eventi tramite un delegato. Per ulteriori informazioni, vedere Generazione di un evento.

Il metodo OnDrawItem consente inoltre alle classi derivate di gestire l'evento senza associare un delegato. Si tratta della tecnica più usata per la gestione dell'evento in una classe derivata.

Note sull'ereditarietà: Quando si esegue l'override del metodo OnDrawItem in una classe derivata, chiamare il metodo OnDrawItem in modo che i delegati registrati ricevano l'evento.

Nell'esempio di codice seguente viene illustrato come realizzare elementi ListBox con un disegno personalizzato. Nel codice viene utilizzata la proprietà DrawMode per specificare che gli elementi disegnati sono di dimensioni fisse e l'evento DrawItem per eseguire il disegno di ogni elemento contenuto nell'oggetto ListBox. Vengono utilizzate le proprietà e i metodi della classe DrawItemEventArgs passati come parametro al gestore eventi per il disegno degli elementi. In questo esempio si presuppone che un controllo ListBox denominato listBox1 sia stato aggiunto a un form e che l'evento DrawItem sia gestito dal gestore eventi definito nel codice stesso. È necessario inoltre che siano stati aggiunti all'oggetto ListBox elementi contenenti, nell'ordine, il testo "Apple", "Orange" e "Plum".

private void listBox1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
{
   // Set the DrawMode property to draw fixed sized items.
   listBox1.DrawMode = DrawMode.OwnerDrawFixed;
   // Draw the background of the ListBox control for each item.
   e.DrawBackground();
   // Define the default color of the brush as black.
   Brush myBrush = Brushes.Black;

   // Determine the color of the brush to draw each item based on the index of the item to draw.
   switch (e.Index)
   {
      case 0:
         myBrush = Brushes.Red;
         break;
      case 1:
         myBrush = Brushes.Orange;
         break;
      case 2:
         myBrush = Brushes.Purple;
         break;
   }

   // Draw the current item text based on the current Font and the custom brush settings.
   e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, myBrush,e.Bounds,StringFormat.GenericDefault);
   // If the ListBox has focus, draw a focus rectangle around the selected item.
   e.DrawFocusRectangle();
}

private void listBox1_DrawItem(Object sender,
    System.Windows.Forms.DrawItemEventArgs e)
{
    // Set the DrawMode property to draw fixed sized items.
    listBox1.set_DrawMode(DrawMode.OwnerDrawFixed);
    // Draw the background of the ListBox control for each item.
    e.DrawBackground();
    // Create a new Brush and initialize to a Black colored brush
    // by default.
    Brush myBrush = Brushes.get_Black();
    // Determine the color of the brush to draw each item based on the
    // index of the item to draw.
    switch (e.get_Index()) {
        case 0 :
            myBrush = Brushes.get_Red();
            break;
        case 1 :
            myBrush = Brushes.get_Orange();
            break;
        case 2 :
            myBrush = Brushes.get_Purple();
            break;
    }

    // Draw the current item text based on the current Font and the custom
    // brush settings.
    e.get_Graphics().DrawString(System.Convert.ToString(listBox1.
        get_Items().get_Item(e.get_Index())), e.get_Font(), myBrush,
        RectangleF.op_Implicit(e.get_Bounds()), StringFormat.
        get_GenericDefault());
    // If the ListBox has focus, draw a focus rectangle around the selected
    // item.
    e.DrawFocusRectangle();
} //listBox1_DrawItem

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.

.NET Framework

Supportato in: 2.0 1.1 1.0
Mostra: