Eventi per proprietà modificate
Se si desidera che un controllo invii notifiche quando viene modificata la proprietà denominata NomeProprietà, definire un evento denominato NomeProprietàChanged e un metodo denominato OnNomeProprietàChanged che generi l'evento. In base alla convenzione di denominazione adottata in Windows Forms, viene aggiunta la parola Changed al nome della proprietà. Il tipo delegato associato a eventi di proprietà modificata è EventHandler mentre il tipo di dati dell'evento è EventArgs. La classe base Control definisce numerosi eventi di proprietà modificata, quali BackColorChanged, BackgroundImageChanged, FontChanged, LocationChanged e altri. Per informazioni generali sugli eventi, vedere Gestione e generazione di eventi e Eventi nei controlli di Windows Form.
L'utilità degli eventi per proprietà modificate risiede nel fatto che consentono ai consumer di un controllo di associare gestori eventi che rispondano alla modifica rilevata. Se è necessario che il controllo risponda a un evento di proprietà modificata da esso generato, eseguire l'override del metodo OnNomeProprietàChanged corrispondente anziché collegare un delegato all'evento. In genere i controlli rispondono agli eventi per proprietà modificate aggiornando altre proprietà o ridisegnando interamente o in parte la propria superficie di disegno.
Nell'esempio riportato di seguito viene illustrato come il controllo personalizzato FlashTrackBar risponda ad alcuni degli eventi di proprietà modificata ereditati da Control. Per l'esempio completo, vedere Procedura: creare un controllo di Windows Form che visualizzi lo stato di avanzamento.
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;
}
}
Vedere anche
Concetti
Eventi nei controlli di Windows Form