Loading
PauloHDSousa - Desenvolvedor, Leitor e jogador: VB.NET Textbox aceitando apenas valores específicos

segunda-feira, 16 de janeiro de 2012

VB.NET Textbox aceitando apenas valores específicos




 Textbox aceitando apenas só valores específicos


Hoje irei mostrar alguns modos existentes de programar o seu Textbox para aceitar apenas valores permitidos por você programador.

Todas as funções citadas devem ser colocadas no Evento KEYPRESS do TextBox (:

Modo de programar o Textbox para aceitar valores definidos na função




Modo de programar para aceitar apenas LETRAS

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

      If Char.IsDigit(e.KeyChar) Then
     e.Handled = True
      End If

End sub


Explicação da técnica


Ao apertar um botão qualquer do teclado enquanto estamos com o FOCUS em um Texbox, o Evento KeyPress(Tecla Pressionada) é acionado.

Private Sub TextBox1_KeyPress

Colocamos dentro deste evento uma verificação para ver SE o que foi digitado é uma Letra

 If Char.IsDigit(e.KeyChar) Then

Caso essa condição seja VERDADEIRA, então

   e.Handled = True

Isso quer dizer que a ESCRITA ( e.Handled ) estará habilitada

Modo de programar para aceitar apenas NÚMEROS

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

            If Asc(e.KeyChar) = 8 Then

            Exit Sub

            End If

                  If Not Char.IsDigit(e.KeyCharThen

                  e.Handled = True

                 End If

End Sub
A primeira parte nós já sabemos o que é e como funciona, vamos para a segunda
If Asc(e.KeyChar) = 8 Then

Exit Sub
End If
Aqui nada mais temos que uma Verificação de que se a Tecla pressionada foi o BACKSPACE,Caso a tecla pressionada for = BACKSPACE então ele sai da Rotina
Para compreender melhor, veja essa tabela com todos os caracteres e seus números correspondentes na tabela ascii

Aproveite e utilize a tabela para criar regras novas, Programar é criar.

Depois fazemos outra verificação, É A MESMA verificação feita para permitir apenas a entrada de números COM UM ADICIONAL, o Uso do NOT antes da verificação.
If Not Char.IsDigit(e.KeyCharThen

e.Handled = True

End If
O uso do NOT vai inverter o valor lógico devolvido, Exemplo
If 10 = 10 Then
'O RESULTADO DESTE IF SERÁ TRUE
End If
If NOT 10=10 Then
'O RESULTADO DESTE IF SERÁ FALSE
End If
Explicação: o NOT inverte o valor lógico devolvido, 10 é igual a 10 (TRUE) o NOT transforma esse TRUE em FALSE.
PARA QUE ISSO?
Simples, SE NÃO FOR VERDADE QUE É UMA LETRA ( OU SEJA, É UM NÚMERO ) ENTÃO
permita a digitação

                                                                 e.Handled = True

Links adicionais para estudos.

Espero que eu tenha conseguido passar o que eu aprendi aqui para vocês.
Qualquer dúvida é só comentar ou poste a  sua dúvida nos fóruns da Microft Visual Basic.net ou C#, eu visito os fóruns com frequência para tentar ajudar quem tem dúvida.