Événements de modification de propriété
Si vous souhaitez que votre contrôle envoie des notifications lorsqu’une propriété nommée PropertyName change, définissez un événement nommé PropertyName et une méthode nommée On
PropertyNameChanged
Changed
qui déclenche l’événement. La convention d’affectation de noms dans Windows Forms consiste à ajouter le mot Modifié au nom de la propriété. Le type délégué d’événement associé pour les événements modifiés par propriété est EventHandler, et le type de données d’événement est EventArgs. La classe Control de base définit de nombreux événements modifiés par des propriétés, tels que BackColorChanged, BackgroundImageChanged, FontChanged, LocationChanged, et d’autres. Pour plus d’informations sur les événements, consultez Événements et événements dans les contrôles Windows Forms.
Les événements modifiés par des propriétés sont utiles, car ils permettent aux consommateurs d’un contrôle d’attacher des gestionnaires d’événements qui répondent à la modification. Si votre contrôle doit répondre à un événement modifié par une propriété qu’il déclenche, remplacez la méthode PropertyNameChanged
correspondante On
au lieu d’attacher un délégué à l’événement. Un contrôle répond généralement à un événement modifié par une propriété en mettant à jour d’autres propriétés ou en redessinant une partie ou toute sa surface de dessin.
L’exemple suivant montre comment le FlashTrackBar
contrôle personnalisé répond à certains des événements modifiés Controlpar la propriété dont il hérite. Pour obtenir l’exemple complet, consultez Comment : créer un contrôle Windows Forms qui affiche la progression.
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;
}
}
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
Voir aussi
.NET Desktop feedback