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

  1. 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 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
    
  2. 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

  1. 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
    
  2. 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