Substitution de la méthode OnPaint

Mise à jour : novembre 2007

Les étapes de base de la substitution d'un événement défini dans le .NET Framework sont identiques et sont récapitulées dans la liste suivante.

Pour substituer un événement hérité

  1. Substituez la méthode OnNomÉvénement protégée.

  2. Appelez la méthode OnNomÉvénement de la classe de base à partir de la méthode OnNomÉvénement substituée, de sorte que les délégués inscrits reçoivent l'événement.

L'événement Paint est décrit en détail dans cette section, car tous les contrôles Windows Forms doivent substituer l'événement Paint qu'ils héritent de Control. La classe Control de base ignore comment un contrôle dérivé doit être dessiné et ne fournit pas de logique de peinture dans la méthode OnPaint. La méthode OnPaint de la classe Control distribue simplement l'événement Paint aux récepteurs d'événements inscrits.

Si vous avez utilisé l'exemple dans Comment : développer un contrôle Windows Forms simple, vous avez consulté un exemple de substitution 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 les données de l'événement Paint. Elle possède deux propriétés, comme illustré 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 permettent d'accéder aux fonctionnalités de GDI+, la nouvelle bibliothèque de graphiques Windows. L'objet Graphics possède des méthodes pour le dessin de points, de chaînes, de lignes, d'arcs, d'ellipses 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

Concepts

Rendu d'un contrôle Windows Forms

Définition d'un événement dans les contrôles Windows Forms

Autres ressources

Gestion et déclenchement d'événements