Procedura: Convalidare le impostazioni dell'applicazione
In questo argomento viene illustrato come convalidare le impostazioni dell'applicazione prima che vengano mantenute.
Poiché le impostazioni dell'applicazione sono fortemente tipate, si ha la certezza che gli utenti non possano assegnare dati di un tipo non corretto a una determinata impostazione. Tuttavia, un utente può comunque tentare di assegnare un valore a un'impostazione che non rientra nei limiti accettabili, ad esempio specificando una data di nascita che si verifica in futuro. ApplicationSettingsBase, la classe padre di tutte le classi di impostazioni dell'applicazione espone quattro eventi per abilitare il controllo di tali limiti. La gestione di questi eventi inserisce tutto il codice di convalida in un'unica posizione, anziché disperderlo in tutto il progetto.
L'evento usato dipende da quando è necessario convalidare le impostazioni, come descritto nella tabella seguente.
Evento | Occorrenza e uso |
---|---|
SettingsLoaded | Si verifica dopo il caricamento iniziale di un gruppo di proprietà delle impostazioni. Usare questo evento per convalidare i valori iniziali per l'intero gruppo di proprietà prima che vengano usati all'interno dell'applicazione. |
SettingChanging | Si verifica prima della modifica del valore di una singola proprietà delle impostazioni. Utilizzare questo evento per convalidare una singola proprietà prima che venga modificata. Può fornire feedback immediato agli utenti relativi alle azioni e alle scelte. |
PropertyChanged | Si verifica dopo la modifica del valore di una singola proprietà delle impostazioni. Utilizzare questo evento per convalidare una singola proprietà dopo la modifica. Questo evento viene usato raramente per la convalida, a meno che non sia necessario un lungo processo di convalida asincrono. |
SettingsSaving | Si verifica prima della memorizzazione del gruppo di proprietà delle impostazioni. Usare questo evento per convalidare i valori per l'intero gruppo di proprietà prima che vengano mantenuti su disco. |
In genere, non si useranno tutti questi eventi all'interno della stessa applicazione a scopo di convalida. Ad esempio, è spesso possibile soddisfare tutti i requisiti di convalida gestendo solo l'evento SettingChanging.
Un gestore eventi esegue in genere una delle azioni seguenti quando rileva un valore non valido:
Fornisce automaticamente un valore noto come corretto, ad esempio il valore predefinito.
Esegue nuovamente una query sull'utente del codice del server per ottenere informazioni.
Per gli eventi generati prima delle azioni associate, ad esempio SettingChanging e SettingsSaving, usa l'argomento CancelEventArgs per annullare l'operazione.
Per altre informazioni sulla gestione degli eventi, vedere Panoramica dei gestori eventi.
Le procedure seguenti illustrano come verificare la data di nascita valida usando il SettingChanging o l'evento SettingsSaving. Le procedure sono state scritte presupponendo che siano già state create le impostazioni dell'applicazione; In questo esempio si eseguirà il controllo dei limiti su un'impostazione denominata DateOfBirth
. Per altre informazioni sulla creazione delle impostazioni, vedere Procedura: Creare impostazioni applicazione.
Per ottenere l'oggetto impostazioni dell'applicazione
Ottenere un riferimento all'oggetto impostazioni dell'applicazione (istanza del wrapper) completando uno degli elementi elencati seguenti:
Se si sono create le impostazioni usando la finestra di dialogo Impostazioni dell'applicazione di Visual Studio nell'Editor di proprietà , è possibile recuperare l'oggetto delle impostazioni predefinite generato per la lingua attraverso la seguente espressione.
Properties.Settings.Default
MySettings.Default
-o-
Se sei uno sviluppatore di Visual Basic e hai creato le impostazioni dell'applicazione utilizzando la Progettazione del progetto, puoi recuperare le tue impostazioni usando l'oggetto My.Settings.
-o-
Se hai creato le impostazioni derivando direttamente da ApplicationSettingsBase, devi istanziare manualmente la tua classe.
MyCustomSettings settings = new MyCustomSettings();
Dim Settings as New MyCustomSettings()
Le procedure seguenti sono state scritte presupponendo che l'oggetto delle impostazioni dell'applicazione sia stato ottenuto completando l'ultimo punto elenco di questa procedura.
Per convalidare le impostazioni dell'applicazione quando viene modificata un'impostazione
Se sei uno sviluppatore C#, nell'evento
Load
del modulo o controllo, aggiungi un gestore per l'evento SettingChanging.-o-
Gli sviluppatori di Visual Basic devono dichiarare la variabile
Settings
usando la parola chiaveWithEvents
.public void Form1_Load(Object sender, EventArgs e) { settings.SettingChanging += new SettingChangingEventHandler(MyCustomSettings_SettingChanging); }
Public Sub Form1_Load(sender as Object, e as EventArgs) AddHandler settings.SettingChanging, AddressOf MyCustomSettings_SettingChanging End Sub
Definire il gestore eventi e scrivere il codice all'interno di esso per eseguire il controllo dei limiti sulla data di nascita.
private void MyCustomSettings_SettingChanging(Object sender, SettingChangingEventArgs e) { if (e.SettingName.Equals("DateOfBirth")) { var newDate = (DateTime)e.NewValue; if (newDate > DateTime.Now) { e.Cancel = true; // Inform the user. } } }
Private Sub MyCustomSettings_SettingChanging(sender as Object, e as SettingChangingEventArgs) Handles Settings.SettingChanging If (e.SettingName.Equals("DateOfBirth")) Then Dim NewDate as Date = CType(e.NewValue, Date) If (NewDate > Date.Now) Then e.Cancel = True ' Inform the user. End If End If End Sub
Per convalidare le impostazioni dell'applicazione quando si verifica un salvataggio
Nell'evento di
Load
del modulo o del controllo aggiungere un gestore eventi per l'evento SettingsSaving.public void Form1_Load(Object sender, EventArgs e) { settings.SettingsSaving += new SettingsSavingEventHandler(MyCustomSettings_SettingsSaving); }
Public Sub Form1_Load(Sender as Object, e as EventArgs) AddHandler settings.SettingsSaving, AddressOf MyCustomSettings_SettingsSaving End Sub
Definire il gestore eventi e scrivere il codice all'interno di esso per eseguire il controllo dei limiti sulla data di nascita.
private void MyCustomSettings_SettingsSaving(Object sender, SettingsSavingEventArgs e) { if (this["DateOfBirth"] > Date.Now) { e.Cancel = true; } }
Private Sub MyCustomSettings_SettingsSaving(Sender as Object, e as SettingsSavingEventArgs) If (Me["DateOfBirth"] > Date.Now) Then e.Cancel = True End If End Sub
Vedere anche
.NET Desktop feedback