Durch geänderte Eigenschaften ausgelöste Ereignisse

Wenn Ihr Steuerelement Benachrichtigungen senden soll, wenn sich eine Eigenschaft namens PropertyName ändert, definieren Sie ein Ereignis namens PropertyNameChanged und eine Methode namens OnPropertyNameChanged, die das Ereignis auslöst. Die Benennungskonvention in Windows Forms besteht darin, das Wort Changed (Geändert) an den Namen der Eigenschaft anzufügen. Der zugehörige Ereignisdelegatentyp für Ereignisse mit geänderter Eigenschaft ist EventHandler und der Ereignisdatentyp ist EventArgs. Die Basisklasse Control definiert viele Ereignisse mit geänderter Eigenschaft wie BackColorChanged, BackgroundImageChanged, FontChanged, LocationChanged und andere. Hintergrundinformationen zu Ereignissen finden Sie unter Ereignisse und Ereignisse in Windows Forms-Steuerelementen.

Ereignisse mit geänderter Eigenschaft sind nützlich, da sie es den Benutzern eines Steuerelements ermöglichen, Ereignishandler anzufügen, die auf die Änderung reagieren. Wenn Ihr Steuerelement auf ein von ihm ausgelöstes Ereignis mit geänderter Eigenschaft reagieren muss, setzen Sie die entsprechende OnPropertyNameChanged-Methode außer Kraft, anstatt einen Delegaten an das Ereignis anzufügen. Ein Steuerelement reagiert in der Regel auf ein Ereignis mit geänderter Eigenschaft, indem es andere Eigenschaften aktualisiert oder seine Zeichenoberfläche ganz oder teilweise neu zeichnet.

Das folgende Beispiel zeigt, wie das benutzerdefinierte Steuerelement FlashTrackBar auf einige der Ereignisse mit geänderter Eigenschaft reagiert, die es von Control erbt. Das vollständige Beispiel finden Sie unter Vorgehensweise: Erstellen eines Windows Forms-Steuerelements, das den Fortschritt anzeigt.

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

Siehe auch