Remplacement de la méthode OnPaint
Les étapes de base pour remplacer tout événement défini dans le .NET Framework sont identiques et sont résumées dans la liste suivante.
Pour remplacer un événement hérité
Remplacez la méthode protégée
On
EventName.Appelez la méthode
On
EventName de la classe de base à partir de la méthodeOn
EventName remplacée, de manière à ce que les délégués inscrits reçoivent l’événement.
L’événement Paint est abordé en détail ici, car chaque contrôle Windows Forms doit remplacer l’événement Paint qu’il hérite de Control. La classe de base Control ne sait pas comment un contrôle dérivé doit être dessiné et ne fournit aucune logique de peinture dans la méthode OnPaint. La méthode OnPaint de Control distribue simplement l’événement Paint aux récepteurs d’événements inscrits.
Si vous avez travaillé sur l’exemple dans Aide et Astuces : développer un contrôle Windows Forms simple, vous avez vu un exemple de remplacement de la méthode OnPaint. Le fragment de code suivant est extrait de cet exemple.
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);
}
}
La classe PaintEventArgs contient des données pour l’événement Paint. Il a deux propriétés, comme indiqué dans le code suivant.
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 est le rectangle à peindre, et la propriété Graphics fait référence à un objet Graphics. Les classes de l’espace de noms System.Drawing sont des classes managées qui fournissent l’accès aux fonctionnalités de GDI+, la nouvelle bibliothèque graphique Windows. L’objet Graphics a des méthodes pour dessiner des points, des chaînes, des lignes, des arcs, des points de suspension et de nombreuses autres formes.
Un contrôle appelle sa méthode OnPaint chaque fois qu’il doit modifier son affichage visuel. Cette méthode déclenche à son tour l’événement Paint.
Voir aussi
.NET Desktop feedback