VB.NET - Controles TextBox, tratamento e validações


Este artigo apresenta algumas dicas básicas de como operar com controles TextBox em formulários no VB.NET e de como efetuar as principais validações. Lembrando que temos mais de uma forma de realizar estas operações. Se você souber de uma mais efetiva basta colaborar.

Como permitir somente números em um controle TextBox ?

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

If Not Char.IsNumber(e.KeyChar) Then

     e.Handled = True

End If

End Sub

Como permitir somente números, ponto e vírgula em um controle TextBox ?

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

If Not Char.IsNumber(e.KeyChar)  And Not e.KeyChar = vbBack And Not e.KeyChar = "." And Not e.KeyChar = ","

Then

     e.Handled = True

End If

End Sub

Como permitir somente letras em um controle TextBox ?

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

If Not Char.IsLetter(e.KeyChar) And Not e.KeyChar = vbBack And Not e.KeyChar = "." And Not e.KeyChar = "," Then

     e.Handled = True

End If

End Sub

Como permitir somente letras e números em um controle TextBox ?

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

If Not Char.IsLetterOrDigit(e.KeyChar) Then

     e.Handled = True

End If

End Sub

Como mudar para outro controle pressionando a tecla ENTER ?

1- O código abaixo envia um TAB quando um ENTER é pressionado estando o foco no controle.

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

If e.KeyChar = Convert.ToChar(13) Then

   e.Handled = True

    SendKeys.Send("{TAB}")

End If

End Sub

2- Para que o código funcione para todos os controles do formulário podemos fazer o seguinte :

Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress


If
e.KeyChar = Convert.ToChar(13) Then

   e.Handled = True

    SendKeys.Send("{TAB}")

End If


End
Sub

Como selecionar todos os controle de um formulário via código ?

O código a seguir mostra como podemos selecionar todos os controles de um formulário e alterar uma de suas propriedades.

Private Sub Seleciona_Todos_Controles()


Dim
controles As Control


For
Each controles In Me.Controls

      controles.Enabled = False

Next


End
Sub

Como Atuar sobre um controle específico no formulário ?

O código abaixo limpa a propriedade Text de todos os controles do tipo TextBox.

Private Sub Seleciona_Controle()
 

Dim controle As Control


For Each controle In Me.Controls

    If TypeOf controle Is TextBox Then

           controle.Text = ""

    End If

Next

End Sub

Como Atuar sobre controle que estão contidos em outros controles ?

De forma geral, em um formulário , os controles são colocados no interior de controles do tipo GroupBox ou Panel. O código abaixo mostra como atuar sobre controles do tipo TextBox contidos em um GroupBox:

Private Sub Seleciona_Controles_Internos()
 

Dim controle As Control


For
Each controle In Me.GroupBox1.Controls

    If TypeOf controle Is TextBox Then

            controle.Text = ""

End If

Next

End Sub

Como efetuar a formatação de entrada de dados usando expressões regulares ?

Vamos analisar a seguinte seguinte expressão regular :  "^([2-9]{3}-)?[2-9]{3}-\d{4}$".

Mas o que significam todos estes símbolos:

^  Relaciona o início da string
[2-9]{4}-  Relaciona o caractere 2 até 9 exatamente 4 vezes, seguido por um traço (-)
([2-9]{4}-)?  Relaciona a expressão "[2-9]{4}-" zero ou uma vez
[2-9]{4}-  Novamente, relaciona os caracteres de 2 a 9, 4 vezes, seguido por um traço (-)
\d{4}  Relaciona qualquer dígito exatamente 4 vezes
$  Relaciona o fim da string.

Nota: Os colchetes [] representam listas e as chaves {} representam a quantidade de repetições.

O resultado da utilização desta expressão regular deve exibir a formatação: 2222-2222 ou 2222-2222-2222.

O código abaixo valida a entrada de um número de telefone no formato : (0xx)9999-9999 Ex: (021)3506-9875.

A expressão regular usada é : "^\(?\d{3}\)?\d{4}-\d{4}$"
 

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
 

Dim strregex As String = "^\(?\d{3}\)?\d{4}-\d{4}$"


Dim
reg_exp As New Regex(strregex)


If
reg_exp.IsMatch(TextBox5.Text) Then

    TextBox1.BackColor = Color.Yellow

Else

    TextBox1.BackColor = Color.WhiteSmoke

End If

End Sub

Como validar um Email usando expressões regulares ?

A expressão regular para validar um email pode ser a seguinte :

 "^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" + "\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" + ".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"

 

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


Dim strRegex As String = _
 
"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" + "\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" + ".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"


Dim
re As New Regex(strRegex)


If
(re.IsMatch(TextBox6.Text)) Then

     TextBox1.BackColor = Color.Yellow

Else

    TextBox1.BackColor = Color.WhiteSmoke

    e.Cancel = True

End If

End Sub

Como efetuar validações nos controles TextBox ?

Geralmente você usa o evento Validating para verificar se o controle possui um valor válido. Se o valor não for válido defina o tratador de evento e.Cancel com valor igual a True. Isto irá cancelar o evento e não permitirá o foco se mover para o próximo controle.

Você pode usar um controle ErrorProvider e definir o método SetError para um valor que seja inválido.

O tratamento do evento Validate é executado quando o controle é validado com sucesso. Neste caso você pode usar o controle ErrorProvider e definir o método SetError para limpar qualquer erro previamente ocorrido para o controle.

Vejamos um exemplo de validação de CEP:
 
Private Sub txtCep_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtCep.Validating
    ' Verifica se o texto para o CEP contém 8 digitos.
    If Not (txtCep.Text Like "########") Then
        ' O cep é inválido
        ' Cancela o evento 
        e.Cancel = True

        ' seleciona o texto inválido
        txtCep.Select(0, txtCep.Text.Length)

        ' Define a mensagem de erro que o controle ErrorProvider deve exibir.
        ErrorProvider1.SetError(txtCep, "Código de Cep Inválido" & "format")
    End If
End Sub

' Se o CEP for válido limpa o erro.
Private Sub txtCep_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtCep.Validated
    ErrorProvider1.SetError(txtCep, "")
End Sub

Até o próximo artigo VB.NET ...

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti