Überschreiben der OnPaint-Methode
Die grundlegenden Schritte zum Überschreiben eines in .NET Framework definierten Ereignisses sind identisch und werden in der folgenden Liste zusammengefasst.
So überschreiben Sie ein geerbtes Ereignis
Überschreiben Sie die geschützte
On
EventName--Methode.Rufen Sie die
On
EventName--Methode der Basisklasse aus der überschriebenenOn
EventName--Methode auf, damit die registrierten Delegaten das Ereignis empfangen.
Das Paint-Ereignis wird hier ausführlich erläutert, da jedes Windows Forms-Steuerelement das Paint-Ereignis überschreiben muss, das es von Controlerbt. Die Basis Control Klasse weiß nicht, wie ein abgeleitetes Steuerelement gezeichnet werden muss und stellt keine Zeichenlogik in der OnPaint-Methode bereit. Die OnPaint Methode von Control verteilt einfach das Paint Ereignis an registrierte Ereignisempfänger.
Wenn Sie das Beispiel in How to: Develop a Simple Windows Forms Controldurchgearbeitet haben, haben Sie ein Beispiel für das Überschreiben der OnPaint-Methode gesehen. Das folgende Codefragment stammt aus diesem Beispiel.
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 gezeichnete Rechteck, und die Graphics-Eigenschaft bezieht sich auf ein Graphics-Objekt. Die Klassen im System.Drawing-Namespace sind verwaltete Klassen, die Zugriff auf die Funktionalität von GDI+ bieten, die neue Windows-Grafikbibliothek. Das Graphics-Objekt verfügt über Methoden zum Zeichnen von Punkten, Text, Linien, Kreisbögen, Ellipsen und vielen anderen Formen.
Ein Steuerelement ruft seine OnPaint-Methode auf, wenn es die visuelle Anzeige ändern muss. Diese Methode löst wiederum das Paint-Ereignis aus.
Siehe auch
.NET Desktop feedback