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 = TrueSendKeys.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 = TrueSendKeys.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 = False NextEnd 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:
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 ElseTextBox1.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 re As New Regex(strRegex) If (re.IsMatch(TextBox6.Text)) Then TextBox1.BackColor = Color.Yellow ElseTextBox1.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: