Como Validar Configurações do Aplicativo

Este tópico demonstra como validar configurações do aplicativo antes que elas sejam persistentes.

Considerando que as configurações do aplicativo são fortemente tipadas, você tem alguma confiança de que os usuários não podem atribuir dados de um tipo incorreto a uma determinada configuração. No entanto, um usuário ainda pode tentar atribuir um valor a uma configuração que esteja fora do limite aceitável, por exemplo, fornecendo uma data de nascimento no futuro. ApplicationSettingsBase, a classe pai de todas as classes de configurações do aplicativo, expõe quatro eventos para habilitar essa verificação de limites. Manipular esses eventos coloca todo o código de validação em um único local, em vez de distribuí-lo em todo o projeto.

O evento que você usa depende de quando você precisa validar suas configurações, conforme descrito na tabela a seguir.

Evento Ocorrência e uso
SettingsLoaded Ocorre após o carregamento inicial de um grupo de propriedades de configurações.

Use esse evento para validar valores iniciais para todo o grupo de propriedades antes que eles sejam usados no aplicativo.
SettingChanging Ocorre antes da alteração do valor de uma única propriedade.

Use esse evento para validar uma única propriedade antes que ela seja alterada. Pode fornecer imediatamente comentários aos usuários sobre suas ações e escolhas.
PropertyChanged Ocorre depois da alteração de uma única propriedade de configurações.

Use esse evento para validar uma única propriedade depois que ela for alterada. Este evento raramente é usado para validação, a menos que um processo de validação longo e assíncrono seja necessário.
SettingsSaving Ocorre antes que o grupo de propriedades de configurações seja armazenado.

Use esse evento para validar valores para todo o grupo de propriedades antes que elas sejam persistentes no disco.

Normalmente, você não usará todos esses eventos dentro do mesmo aplicativo para fins de validação. Por exemplo, muitas vezes é possível cumprir todos os requisitos de validação manipulando apenas o SettingChanging evento.

Um manipulador de eventos geralmente executa uma das seguintes ações quando detecta um valor inválido:

  • Fornece automaticamente um valor sabidamente correto, como o valor padrão.

  • Consulta novamente o usuário do código do servidor para obter informações.

  • Para eventos gerados antes de suas ações associadas, como SettingChanging e SettingsSaving, usa o CancelEventArgs argumento para cancelar a operação.

Para obter mais informações sobre a manipulação de eventos, consulte Visão geral de manipuladores de evento.

Os procedimentos a seguir mostram como testar uma data de nascimento válida usando o ou o SettingChangingSettingsSaving evento. Os procedimentos foram escritos com a pressuposição de que você já criou suas configurações do aplicativo. Neste exemplo, vamos executar a verificação de limites em uma configuração chamada DateOfBirth. Para obter mais informações sobre a criação de configurações, consulte Como criar configurações de aplicativo.

Para obter o objeto de configurações do aplicativo

  • Obtenha uma referência para o objeto de configurações de aplicativo (a instância do wrapper) executando um dos seguintes itens com marcadores:

    • Se você tiver criado suas configurações usando a caixa de diálogo de Configurações de aplicativo do Visual Studio no Editor de propriedade, poderá recuperar o objeto de configurações padrão gerado para sua linguagem por meio da seguinte expressão.

      Properties.Settings.Default
      
      MySettings.Default
      

      -ou-

    • Se você for um desenvolvedor de Visual Basic e tiver criado as configurações do aplicativo usando o Designer de Projeto, poderá recuperar as configurações usando o Objeto My.Settings.

      -ou-

    • Se você criou suas configurações derivando de ApplicationSettingsBase diretamente, você precisa instanciar sua classe manualmente.

      MyCustomSettings settings = new MyCustomSettings();
      
      Dim Settings as New MyCustomSettings()
      

Os procedimentos a seguir foram escritos com a suposição de que o objeto de configurações do aplicativo foi obtido concluindo o último item com marcadores neste procedimento.

Para validar as Configurações do Aplicativo quando uma configuração é alterada

  1. Se você for um desenvolvedor C#, no evento do Load seu formulário ou controle, adicione um manipulador de eventos para o SettingChanging evento.

    -ou-

    Se você for um desenvolvedor de Visual Basic, deverá declarar a variável Settings usando a palavra-chave 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. Defina o manipulador de eventos e escreva o código dentro dele para executar a verificação de limites na data de nascimento.

    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
    

Para validar as Configurações do Aplicativo quando uma operação de Salvar ocorrer

  1. No evento do Load formulário ou controle, adicione um manipulador de eventos para o SettingsSaving evento.

    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. Defina o manipulador de eventos e escreva o código dentro dele para executar a verificação de limites na data de nascimento.

    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
    

Confira também