Freigeben über


Überschreiben der OnPaint-Methode

Aktualisiert: November 2007

Die grundlegenden Schritte zum Überschreiben von in .NET Framework definierten Ereignissen sind identisch und werden in der folgenden Liste zusammengefasst.

So überschreiben Sie ein geerbtes Ereignis

  1. Überschreiben Sie die geschützte OnEventName-Methode.

  2. Rufen Sie die OnEventName-Methode der Basisklasse aus der überschriebenen OnEventName-Methode auf, sodass registrierte Delegaten das Ereignis empfangen.

Das Paint-Ereignis wird hier ausführlich erörtert, da jedes Windows Forms-Steuerelement das von Control geerbte Paint-Ereignis überschreiben muss. Die Control-Basisklasse "weiß" nicht, wie ein abgeleitetes Steuerelement gezeichnet werden muss, und stellt in der OnPaint-Methode keine Zeichenlogik bereit. Die OnPaint-Methode von Control sendet das Paint-Ereignis einfach an registrierte Ereignisempfänger.

Wenn Sie das Beispiel unter Gewusst wie: Entwickeln eines einfachen Windows Forms-Steuerelements durchgearbeitet haben, wissen Sie, wie die OnPaint-Methode überschrieben wird. Das folgende Codefragment ist daraus entnommen.

Public Class FirstControl
   Inherits Control
   
   Public Sub New()
   End Sub
   
   Protected Overrides Sub OnPaint(e As PaintEventArgs)
      ' Call the OnPaint method of the base class.
      MyBase.OnPaint(e)
      ' Call methods of the System.Drawing.Graphics object.
      e.Graphics.DrawString(Text, Font, New SolidBrush(ForeColor), RectangleF.op_Implicit(ClientRectangle))
   End Sub
End Class 
public class FirstControl : Control{
   public FirstControl() {}
   protected override void OnPaint(PaintEventArgs e) {
      // Call the OnPaint method of the base class.
      base.OnPaint(e);
      // Call methods of the System.Drawing.Graphics object.
      e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), ClientRectangle);
   } 
} 

Die PaintEventArgs-Klasse enthält Daten für das Paint-Ereignis. Sie verfügt über zwei Eigenschaften, wie im folgenden Code dargestellt.

Public Class PaintEventArgs
   Inherits EventArgs
   ...
   Public ReadOnly Property ClipRectangle() As System.Drawing.Rectangle
      ...
   End Property
   
   Public ReadOnly Property Graphics() As System.Drawing.Graphics
      ...
   End Property 
   ...
End Class
public class PaintEventArgs : EventArgs {
...
    public System.Drawing.Rectangle ClipRectangle {}
    public System.Drawing.Graphics Graphics {}
...
}

ClipRectangle ist das zu zeichnende Rechteck, und die Graphics-Eigenschaft verweist auf ein Graphics-Objekt. Die Klassen im System.Drawing-Namespace sind verwaltete Klassen, die den Zugriff auf die Funktionen von GDI+, die neue Windows-Graphikbibliothek, ermöglichen. Das Graphics-Objekt verfügt über Methoden zum Zeichnen von Punkten, Zeichenfolgen, Linien, Bögen, Ellipsen und vielen anderen Formen.

Ein Steuerelement ruft seine OnPaint-Methode dann auf, wenn seine visuelle Darstellung geändert werden soll. Diese Methode löst wiederum das Paint-Ereignis aus.

Siehe auch

Konzepte

Wiedergeben eines Windows Forms-Steuerelements

Definieren eines Ereignisses in Windows Forms-Steuerelementen

Weitere Ressourcen

Behandeln und Auslösen von Ereignissen