Condividi tramite


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

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

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