ErrorProvider


Ontem um aluno me fez um questionamento quando estava explicando sobre o controle ErrorProvider do Windows Forms. A questão é quando utilizamos o evento Validating de algum controle, como por exemplo, o TextBox, para validarmos um determinado valor, se esta condição não for atendida e, tentarmos fechar o formulário, a validação é disparada e, sendo assim, até que ela não seja atendida, o formulário não será fechado, pois o evento Validating do(s) controle(s) são disparados antes do fechamento definitivo do formulário. O código abaixo ilustra isso:

    Private Sub TextBox1_Validating(ByVal sender As Object, _
        ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating

        If Me.TextBox1.Text = String.Empty Then
            Me.ErrorProvider1.SetError(Me.TextBox1, “Digite algo..”)
            e.Cancel = True
        End If
    End Sub

    Private Sub TextBox1_Validated(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles TextBox1.Validated

        Me.ErrorProvider1.SetError(Me.TextBox1, String.Empty)
   
End Sub

Só que o problema, como já vimos, se tentarmos fechar o formulário e o TextBox ainda estiver vazio, a validação é feita e, a propriedade Cancel é definida como True, cancelando assim a finalização do processo e o fechamento do formulário. A solução neste caso é sobrescrever o método OnClosing do Form e definir o Cancel do argumento como False, forçando assim o fechamento do formulário. Logo, precisamos apenas adicionar o seguinte trecho de código:

    Protected Overrides Sub OnClosing(ByVal e As System.ComponentModel.CancelEventArgs)
        e.Cancel = False
    End Sub

Publicidade

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s