Dela via


Å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

  1. Åsidosätt metoden OnEventName.

  2. Anropa basklassens metod OnEventName från den överskuggade metoden OnEventName, 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