Åsidosätta OnPaint-metoden
De grundläggande stegen för att åsidosätta alla händelser som definierats i .NET Framework är identiska och sammanfattas i följande lista.
Så här åsidosätter du en ärvd händelse
Åsidosätt metoden
On
EventName.Anropa basklassens metod
On
EventName från den överskuggade metodenOn
EventName, så att registrerade delegater får händelsen.
Händelsen Paint beskrivs i detalj här eftersom varje Windows Forms-kontroll måste åsidosätta den Paint händelse som den ärver från Control. Basklassen Control vet inte hur en härledd kontroll behöver ritas och tillhandahåller ingen målningslogik i OnPaint-metoden. Metoden OnPaint för Control skickar händelsen Paint helt enkelt till registrerade händelsemottagare.
Om du har gått igenom exemplet i How to: Develop a Simple Windows Forms Controlhar du sett ett exempel på att åsidosätta metoden OnPaint. Följande kodfragment tas från det exemplet.
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);
}
}
Klassen PaintEventArgs innehåller data för händelsen Paint. Den har två egenskaper, som visas i följande kod.
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 är rektangeln som ska målas och egenskapen Graphics refererar till ett Graphics objekt. Klasserna i System.Drawing-namnområdet är hanterade klasser som ger åtkomst till funktionerna i GDI+, det nya Windows-grafikbiblioteket. Objektet Graphics har metoder för att rita punkter, strängar, linjer, bågar, ellipser och många andra former.
En kontroll anropar sin OnPaint-metod när den behöver ändra sin visuella visning. Den här metoden genererar i sin tur händelsen Paint.
Se även
.NET Desktop feedback