Como: Validar configurações do aplicativo
Este tópico demonstra como validar as configurações do aplicativo antes que elas sejam persistentes.
Como 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 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 do aplicativo, expõe quatro eventos para habilitar a verificação desses limites. A manipulação desses eventos coloca todo o seu 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.
Evento | Ocorrência e utilização |
---|---|
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 que o valor de uma única propriedade de configurações seja alterado. Use esse evento para validar uma única propriedade antes que ela seja alterada. Ele pode fornecer feedback imediato aos usuários sobre suas ações e escolhas. |
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 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 eles sejam persistidos 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 evento SettingChanging.
Um manipulador de eventos geralmente executa uma das seguintes ações quando deteta um valor inválido:
Fornece automaticamente um valor conhecido como correto, como o valor padrão.
Volta a consultar o utilizador 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 manipulação de eventos, consulte Visão Geral dos Manipuladores de Eventos.
Os procedimentos a seguir mostram como testar uma data de nascimento válida usando o evento SettingChanging ou SettingsSaving. Os procedimentos foram escritos sob a suposição de que você já criou as configurações do 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 Como criar configurações do aplicativo.
Para obter o objeto de configurações do aplicativo
Obtenha uma referência ao objeto de configurações do aplicativo (a instância do wrapper) concluindo um dos seguintes itens com marcadores:
Se você criou suas configurações usando a caixa de diálogo Configurações do Aplicativo do Visual Studio nodo 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 criou as configurações do aplicativo usando o Project Designer, poderá recuperar suas 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 sob a suposição de que o objeto de configurações do aplicativo foi obtido ao concluir o último item com marcadores neste procedimento.
Para validar as configurações do aplicativo quando uma configuração está sendo alterada
Se é um desenvolvedor C#, no evento
Load
do formulário ou do controlo, adicione um manipulador de eventos para o evento SettingChanging.-ou-
Se você for um desenvolvedor do Visual Basic, você deve 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 ocorre um Save
No evento
Load
do formulário ou 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
Ver também
.NET Desktop feedback