Procedura: convalidare le impostazioni applicazione
Aggiornamento: novembre 2007
In questo argomento viene spiegato come convalidare le impostazioni dell'applicazione prima dell'operazione che le rende persistenti.
Poiché le impostazioni dell'applicazione sono fortemente tipizzate, esiste un buon margine di certezza che non sia possibile per gli utenti assegnare dati del tipo errato a una determinata impostazione. È tuttavia sempre possibile che si tenti di assegnare un valore che non rientra nei limiti accettabili, ad esempio una data di nascita nel futuro. La classe ApplicationSettingsBase, classe padre di tutte le classi delle impostazioni dell'applicazione, espone quattro eventi per il controllo di tali limiti. La gestione di tali eventi consente di inserire tutto il codice di convalida in un'unica posizione invece di distribuirlo in tutto il progetto.
L'evento da utilizzare dipende dal momento in cui è necessario convalidare le impostazioni, come descritto nella tabella riportata di seguito.
Evento |
Occorrenza e utilizzo |
---|---|
Si verifica dopo il caricamento iniziale di un gruppo di proprietà delle impostazioni. Utilizzare l'evento per convalidare i valori iniziali dell'intero gruppo di proprietà prima che vengano utilizzati nell'applicazione. |
|
Si verifica prima che il valore di una singola proprietà di impostazioni venga modificato. Utilizzare l'evento per convalidare una singola proprietà prima che venga modificata. Fornisce riscontro immediato agli utenti relativamente ad azioni e scelte effettuate. |
|
Si verifica dopo che il valore di una singola proprietà di impostazioni venga modificato. Utilizzare l'evento per convalidare una singola proprietà dopo la modifica. L'evento è utilizzato di rado per la convalida, a meno che non sia necessario un processo di convalida asincrono di lunga durata. |
|
Si verifica prima dell'archiviazione del gruppo di proprietà delle impostazioni. Utilizzare l'evento per convalidare i valori dell'intero gruppo di proprietà prima che vengano resi persistenti su disco. |
Normalmente non si utilizzano tutti gli eventi sopra indicati nella stessa applicazione a fini di convalida. Spesso, ad esempio, è 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 sicuramente corretto, ad esempio quello predefinito.
Chiede informazioni all'utente del codice server.
Per gli eventi generati prima delle azioni associate, quali SettingChanging e SettingsSaving, utilizza l'argomento CancelEventArgs per annullare l'operazione.
Per ulteriori informazioni sulla gestione degli eventi, vedere Cenni preliminari sui gestori eventi (Windows Form).
Nelle procedure riportate di seguito viene illustrato come verificare la validità di una data di nascita con l'evento SettingChanging o SettingsSaving. Le procedure presuppongono che le impostazioni dell'applicazione siano già state create. Nell'esempio vengono eseguiti controlli dei limiti relativamente all'impostazione denominata DateOfBirth. Per ulteriori informazioni sulla creazione di impostazioni, vedere Procedura: creare le impostazioni dell'applicazione.
Per ottenere l'oggetto delle impostazioni dell'applicazione
Ottenere un riferimento all'oggetto delle impostazioni dell'applicazione (l'istanza wrapper) eseguendo una delle operazioni seguenti:
Se le impostazioni sono state create con la finestra di dialogo Impostazioni applicazione di Visual Studio nella finestra delle proprietà, recuperare l'oggetto delle impostazioni predefinito generato per il linguaggio utilizzato mediante l'espressione seguente.
Configuration.Settings.Default
MySettings.Default
-oppure-
Se è stato utilizzato Visual Basic e le impostazioni dell'applicazione sono state create con Progettazione progetti, recuperare le impostazioni utilizzando l'oggetto Oggetto My.Settings.
-oppure-
Se le impostazioni sono state create mediante derivazione diretta dalla classe ApplicationSettingsBase, è necessario creare manualmente un'istanza della classe.
MyCustomSettings settings = new MyCustomSettings();
Dim Settings as New MyCustomSettings()
Le procedure seguenti presuppongono che l'oggetto delle impostazioni dell'applicazione sia stato ottenuto completando l'ultima operazione in questa procedura.
Per convalidare impostazioni dell'applicazione quando un'impostazione subisce una modifica
Se si utilizza C#, nel form o nell'evento Load del controllo aggiungere un gestore eventi per l'evento SettingChanging.
-oppure-
Se si utilizza Visual Basic, dichiarare la variabile Settings con la parola chiave WithEvents.
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 al suo interno il codice per eseguire la verifica dei limiti sulla data di nascita.
private void MyCustomSettings_SettingChanging(Object sender, SettingChangingEventArgs e) { if (e.SettingName.Equals("DateOfBirth")) { Date newDate = (Date)e.NewValue; If (newDate > Date.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 impostazioni dell'applicazione quando si verifica un salvataggio
Nel form o nell'evento Load 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 al suo interno il codice per eseguire la verifica 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
Attività
Procedura: creare le impostazioni dell'applicazione