Eventos de cambio de propiedades
Si desea que el control envíe notificaciones cuando cambia una propiedad denominada nombreDePropiedad, defina un evento denominado nombreDePropiedadChanged y un método denominado OnnombreDePropiedadChanged que provoque el evento. Según la convención de nomenclatura de los formularios Windows Forms, se debe agregar la palabra Changed al nombre de la propiedad. El tipo de delegado de evento asociado para los eventos de cambio de propiedades es EventHandler y el tipo de datos de evento es EventArgs. La clase base Control define muchos eventos de cambio de propiedades, como BackColorChanged, BackgroundImageChanged, FontChanged, LocationChanged, y otros. Para obtener información adicional sobre los eventos, vea Controlar y provocar eventos y Eventos de los controles de formularios Windows Forms.
Los eventos de cambio de propiedades son de utilidad ya que permiten a los consumidores de un control agregar controladores de eventos que respondan al cambio. Si el control ha de responder a un evento de cambio de propiedades provocado por él mismo, debe invalidarse el método OnnombreDePropiedadChanged correspondiente en vez de asociar un delegado al evento. Los controles responden normalmente a un evento PropertyChanged actualizando otras propiedades o volviendo a dibujar toda su superficie de dibujo o parte de la misma.
En el siguiente ejemplo se muestra cómo el control personalizado FlashTrackBar responde a algunos de los eventos de cambio de propiedades que hereda de Control. Para obtener el ejemplo completo, vea Cómo: Crear un control de formularios Windows Forms que muestre el progreso.
Protected Overrides Sub OnTextChanged(ByVal E As EventArgs)
MyBase.OnTextChanged(E)
Invalidate()
End Sub
Protected Overrides Sub OnBackColorChanged(ByVal E As EventArgs)
MyBase.OnBackColorChanged(E)
If (baseBackground IsNot Nothing) And Not ShowGradient Then
baseBackground.Dispose()
baseBackground = Nothing
End If
End Sub
protected override void OnTextChanged(EventArgs e) {
base.OnTextChanged(e);
Invalidate();
}
protected override void OnBackColorChanged(EventArgs e) {
base.OnBackColorChanged(e);
if ((baseBackground != null) && (!showGradient)) {
baseBackground.Dispose();
baseBackground = null;
}
}
Vea también
Conceptos
Eventos de los controles de formularios Windows Forms