Property-Changed Eventi
Se si desidera che il controllo invii notifiche quando viene modificata una proprietà denominata PropertyName, definire un evento denominato PropertyNameChanged
e un metodo denominato On
PropertyNameChanged
che genera l'evento. La convenzione di denominazione in Windows Form consiste nell'aggiungere la parola Modificato al nome della proprietà. Il tipo di delegato di evento associato per eventi di modifica della proprietà è EventHandlere il tipo di dati dell'evento è EventArgs. La classe base Control definisce molti eventi di cambiamento delle proprietà, come BackColorChanged, BackgroundImageChanged, FontChanged, LocationChangede così via. Per informazioni generali sugli eventi, vedere eventi ed eventi di nei controlli Windows Form.
Gli eventi di cambiamento delle proprietà sono utili perché consentono agli utenti di un controllo di associare gestori di eventi che rispondono alla modifica. Se il tuo controllo deve rispondere a un evento di modifica della proprietà che esso stesso solleva, esegui l'override del metodo corrispondente On
PropertyNameChanged
invece di associare un delegato all'evento. Un controllo risponde in genere a un evento di modifica della proprietà aggiornando altre proprietà o ridisegnando parte o tutta la relativa superficie di disegno.
Nell'esempio seguente viene illustrato come il controllo personalizzato FlashTrackBar
risponde ad alcuni degli eventi di modifica della proprietà che eredita da Control. Per l'esempio completo, vedere Procedura: Creare un controllo Windows Form che mostra lo stato di avanzamento.
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
Vedere anche
.NET Desktop feedback