Share via


Eventi per proprietà modificate

Se si desidera che un controllo invii notifiche quando la proprietà PropertyName viene modificata, definire un evento denominato PropertyNameChanged e un metodo denominato OnPropertyNameChanged che generi l'evento. In base alla convenzione di denominazione adottata in Windows Form, viene aggiunta la parola chiave 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 corrispondente metodo OnPropertyNameChanged 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.OnTextChanged(E)
    If Not (baseBackground Is 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.OnTextChanged(e);
    if ((baseBackground != null) && (!showGradient)) {
                baseBackground.Dispose();
                baseBackground = null;
    }
}

Vedere anche

Concetti

Eventi nei controlli di Windows Form

Altre risorse

Gestione e generazione di eventi
Proprietà dei controlli Windows Form