É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 OnPropertyNameChangedChanged 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 Onau 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