Reemplazar el método OnPaint
Los pasos básicos para invalidar cualquier evento definido en .NET Framework son idénticos y se resumen en la lista siguiente.
Para invalidar un evento heredado
Invalide el método
On
EventName protegido.Llame al método
On
EventName de la clase base desde el métodoOn
EventName invalidado, de forma que los delegados registrados reciban el evento.
El evento Paint se describe en detalle aquí porque todos los controles de Windows Forms deben invalidar el evento Paint que hereda de Control. La clase base Control no sabe cómo se debe dibujar un control derivado y no proporciona ninguna lógica de representación en el método OnPaint. El método OnPaint de Control simplemente envía el evento Paint a los receptores de eventos registrados.
Si ha trabajado con el ejemplo ilustrado en Procedimiento para crear un control de Windows Forms sencillo, ya ha visto un ejemplo de invalidación del método OnPaint. El fragmento de código siguiente se ha extraído de ese ejemplo.
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 clase PaintEventArgs contiene datos del evento Paint. Tiene dos propiedades, como se muestra en el código siguiente.
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 es el rectángulo que se va a representar y la propiedad Graphics hace referencia a un objeto Graphics. Las clases del espacio de nombres System.Drawing son clases administradas que proporcionan acceso a la funcionalidad de GDI+, la nueva biblioteca gráfica de Windows. El objeto Graphics tiene métodos para dibujar puntos, cadenas, líneas, arcos, elipses y muchas otras formas.
Un control invoca a su método OnPaint siempre que necesite cambiar su presentación visual. A cambio, este método genera el evento Paint.
Vea también
.NET Desktop feedback