Como validar as configurações do aplicativo
Este tópico demonstra como validar as configurações do aplicativo antes que elas sejam mantidas.
Como as configurações do aplicativo são fortemente tipadas, você pode confiar que os usuários não podem atribuir dados de um tipo incorreto a uma configuração determinada. No entanto, um usuário ainda pode tentar atribuir um valor a uma configuração que esteja fora dos limites aceitáveis, por exemplo, fornecendo uma data de nascimento que ocorra no futuro. ApplicationSettingsBase, a classe pai de todas as classes de configurações de aplicativo, expõe quatro eventos para habilitar essa verificação de limites. Lidar com esses eventos coloca todo o código de validação em um único local, em vez de dispersá-lo por todo o projeto.
O evento que você usa depende de quando você precisa validar suas configurações, conforme descrito na tabela a seguir.
Acontecimento | Ocorrência e uso |
---|---|
SettingsLoaded | Ocorre após o carregamento inicial de um grupo de propriedades de configurações. Use esse evento para validar os valores iniciais de todo o grupo de propriedades antes que eles sejam usados no aplicativo. |
SettingChanging | Ocorre antes que o valor de uma única propriedade de configurações seja alterado. Use esse evento para validar uma única propriedade antes de ser alterada. Ele pode fornecer comentários imediatos aos usuários sobre suas ações e opções. |
PropertyChanged | Ocorre depois que o valor de uma única propriedade de configurações é alterado. Use esse evento para validar uma única propriedade depois que ela for alterada. Esse evento raramente é usado para validação, a menos que um processo de validação assíncrono longo 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 eles sejam persistidos no disco. |
Normalmente, você não usará todos esses eventos no mesmo aplicativo para fins de validação. Por exemplo, geralmente é possível atender a todos os requisitos de validação manipulando apenas o evento SettingChanging.
Um manipulador de eventos geralmente executa uma das seguintes ações quando detecta um valor inválido:
Fornece automaticamente um valor conhecido por estar 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 argumento CancelEventArgs para cancelar a operação.
Para obter mais informações sobre o tratamento de eventos, consulte Visão Geral dos Manipuladores de Eventos.
Os procedimentos a seguir mostram como testar uma data de nascimento válida usando a SettingChanging ou o evento SettingsSaving. Os procedimentos foram escritos sob a suposição de que você já criou suas configurações de aplicativo; neste exemplo, executaremos a verificação de limites em uma configuração chamada DateOfBirth
. Para obter mais informações sobre como criar configurações, consulte How to: Create Application Settings.
Para obter o objeto de configurações do aplicativo
Obtenha uma referência ao objeto de configurações do aplicativo (a instância do invólucro) completando um dos itens a seguir:
Se você criou suas configurações usando a caixa de diálogo Configurações de Aplicativo do Visual Studio no editor de propriedades do , poderá recuperar o objeto de configurações padrão gerado para seu idioma por meio da expressão a seguir.
Properties.Settings.Default
MySettings.Default
-ou-
Se você for um desenvolvedor do Visual Basic e tiver criado suas configurações de aplicativo usando o Designer de Projeto, poderá recuperar suas configurações usando o objeto My.Settings.
-ou-
Se você criou suas configurações derivando de ApplicationSettingsBase diretamente, precisará instanciar sua classe manualmente.
MyCustomSettings settings = new MyCustomSettings();
Dim Settings as New MyCustomSettings()
Os procedimentos a seguir foram escritos sob 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 está mudando
Se você for um desenvolvedor do C#, no evento de
Load
do seu formulário ou controle, adicione um manipulador de eventos para o evento SettingChanging.-ou-
Se você for um desenvolvedor do 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 ocorrer um Salvamento
No evento
Load
do formulário ou do controle, adicione um manipulador de eventos para o 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
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
Consulte também
.NET Desktop feedback