Procedura: convalidare le impostazioni applicazione
In questo argomento viene illustrato come convalidare le impostazioni dell'applicazione prima dell'operazione che le rende persistenti.
Poiché le impostazioni dell'applicazione sono fortemente tipizzate, è necessario in qualche modo che gli utenti non possano assegnare dati di tipo non corretto a una determinata impostazione. Un utente potrebbe comunque provare ad assegnare un valore a un'impostazione che non rientra nei limiti accettabili, ad esempio, fornendo una data di nascita che ha luogo nel 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 tali eventi inserisce tutto il codice di convalida in un'unica posizione, invece di distribuirlo in tutto il progetto.
L'evento da usare 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 che venga modificato il valore di una singola proprietà delle impostazioni. Usare questo evento per convalidare una singola proprietà prima che venga modificata. Può offrire un feedback immediato agli utenti in relazione alle loro azioni e scelte. |
PropertyChanged | Si verifica quando viene modificato il valore di una singola proprietà delle impostazioni. Usare questo evento per convalidare una singola proprietà dopo che è stata modificata. Questo evento viene raramente usato per la convalida a meno che non sia necessario un lungo e asincrono processo di convalida. |
SettingsSaving | Si verifica prima che il gruppo di impostazioni della proprietà venga archiviato. Usare questo evento per convalidare i valori per l'intero gruppo di proprietà prima che siano resi persistenti sul disco. |
In genere, non si usano tutti questi eventi all'interno della stessa applicazione ai fini della 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 da correggere, ad esempio il valore predefinito.
Richiede informazioni all'utente del codice del server.
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 Informazioni generali sui gestori eventi.
Le procedure seguenti illustrano come verificare la data di nascita valida utilizzando o SettingChanging l'evento SettingsSaving . Le procedure sono state scritte in base al presupposto che le impostazioni dell'applicazione siano già state create. In questo esempio, si eseguirà il controllo di un'impostazione denominata DateOfBirth
. Per altre informazioni sulle impostazioni dell'applicazione, vedere Procedura: Creare impostazioni applicazioni.
Per ottenere l'oggetto delle impostazioni dell'applicazione
Ottenere un riferimento all'oggetto delle impostazioni applicazione (l'istanza wrapper), completando uno degli elementi puntati seguenti:
Se le impostazioni sono state create usando la finestra di dialogo Impostazione applicazione di Visual Studio in Editor proprietà, è possibile recuperare l'oggetto predefinito delle impostazioni generato per la propria lingua tramite l'espressione seguente.
Properties.Settings.Default
MySettings.Default
-oppure-
Se si è uno sviluppatore di Visual Basic e si sono create le impostazioni dell'applicazione tramite Creazione progetti, è possibile recuperare le impostazioni usando My.Settings Object.
-oppure-
Se le impostazioni sono state create derivando direttamente da ApplicationSettingsBase , è necessario creare un'istanza manuale della classe.
MyCustomSettings settings = new MyCustomSettings();
Dim Settings as New MyCustomSettings()
Sono state scritte le procedure seguenti presupponendo che l'oggetto impostazioni dell'applicazione sia stato ottenuto completando l'ultimo elemento puntato in questa procedura.
Per convalidare le impostazioni dell'applicazione durante la modifica di un'impostazione
Gli sviluppatori C# che si trovano nell'evento del modulo o del
Load
controllo aggiungono un gestore eventi per l'evento SettingChanging .-oppure-
Se si è uno sviluppatore di Visual Basic, è necessario 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 per eseguire il controllo associato alla 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 applicazione durante un salvataggio
Nell'evento della maschera o del
Load
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 per eseguire il controllo associato alla 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
Vedi anche
.NET Desktop feedback