 VB.NET - 
Controles TextBox, tratamento e validações
 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 
     | 
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() 
     
     controles.Enabled = FalseNext 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 
 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:
| PrivateSub 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.YellowElse TextBox1.BackColor = Color.WhiteSmokeEnd 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 re As New Regex(strRegex) If (re.IsMatch(TextBox6.Text)) Then TextBox1.BackColor = Color.YellowElse 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 Facebook
  
 Compartilhe no Twitter
 
Compartilhe no Twitter
 
Referências: