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 SettingChanging SettingsSaving 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
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-chaveWithEvents
.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
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
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
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
.NET Desktop feedback