1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

VB.NET | Formatar textbox para que só aceite "letras"

Discussão em 'Programação' iniciada por diog0silva, 23 de Abril de 2009. (Respostas: 11; Visualizações: 8913)

  1. diog0silva

    diog0silva Power Member

    Boas.

    Tenho uma textbox "Nome do Cliente". Queria que só desse para introduzir valores não númericos nesse campo, é possivel?

    Caso não seja, existe alguma função que verifique se existem valores numericos no campo?

    Cumprimentos
     
  2. Xikinho90

    Xikinho90 Power Member

  3. diog0silva

    diog0silva Power Member

    tive a dar uma vista de olhos, mas nao encontrei nada :\
     
  4. S0ul

    S0ul Power Member

    Mas é a única maneira por assim dizer que tens para filtrar isso, caso contrário tens de andar com ifs e a verificares.
     
  5. diog0silva

    diog0silva Power Member

    não digo o contrário lol o que disse foi que não encontrei lá nada, ou pelo menos não percebi lol
     
  6. ribeiro55

    ribeiro55 Power Member

    Ora, estamos a falar de um grupo de caracteres que têm uma boa particularidade.
    Os seus códigos são sequenciais desde o 48 ao 57.
    Se não queres chatices, podes verificar o que pretendes apenas com um "IF"

    Código:
        Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    
            If (Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57) Then
                e.Handled = True
                e = Nothing
            End If
        End Sub
     
  7. boas,
    podes usar isto q também funciona

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

    Dim KeyAscii As Short = Asc(e.KeyChar)
    Select Case KeyAscii
    Case System.Windows.Forms.Keys.Back '<--- this is for backspace
    Case 13
    e.Handled = True
    SendKeys.Send("{TAB}") '<---- use to tab to next textbox or control
    KeyAscii = 0
    Case Is <= 32
    ' KeyAscii = 0
    Case 48 To 57 '<--- this is for numbers
    Exit Sub
    Case 65 To 90 '<--- this is for Uppercase
    Exit Sub
    Case 97 To 122 '<--- this is for Lowercase Alpha
    Exit Sub
    Case Else
    e.Handled = True
    End Select
    End Sub
     
  8. ribeiro55

    ribeiro55 Power Member

    Tag CODE...
    Para além disso, esse código não vai fazer nada.
    Saíres da sub que "handles" o evento KeyPress não vai evitar que o código não seja assumido.
    Mesmo que ponhas a var KeyAscii a zeros, nada vai alterar, porque não estás a afectar o KeyPressEventArgs de forma alguma.
    Para além disso, o rapaz quer evitar números, portanto todo o Select Case, excepto este case:
    Código:
    Case 48 To 57
    Exit Sub
    É inútil, e mesmo assim não funciona.

    Assim:
    Código:
    Case 48 To 57
    e.KeyChar = Nothing
    É que funciona, e para fazer isso, basta-te um "IF". Não precisas de um Select Case. O que nos remete para a solução anterior.

    Devias ter testado isso antes de ter tirado do expert-exchange e postado aqui :p
     
    Última edição: 24 de Abril de 2009
  9. alfinete

    alfinete Power Member

    so para digitos com o numero que quizres de digitos

    para so aceitar 4 digitos valida_digitos(txtbox.text,1,4);

    para so aceitar 7 digitos valida_digitos(txtbox.text,1,7);


    Código:
    
    
     private bool valida_digitos(string str, int numi, int numf)
                      {
    
                       Regex Data = new Regex(@"^\d{"+numi+","+numf+"}$");
                       return Data.IsMatch(str);
    
                      }
    
    mas a melhor opção é a do keypress pois esse não te deixa escrever caso não aceite

    para expressões regulares tens de utilizar estes namespaces

    Código:
    using System.Text.RegularExpressions;
    using System.IO;
    
    no caso da expressão regular que te arranjo tens de clicar num botão para ale ver se é numero ou n

    espero ter ajudado
     
  10. jpaulino

    jpaulino Power Member

    E porque não usar uma MaskedTextBox ? É só definir a mascara e já esta :)
     
  11. diog0silva

    diog0silva Power Member

    Nunca usei uma MaskedTextBox para Strings. Só usei para valores númericos ou datas. Como faço para que só aceite letras e não números?
     
  12. jpaulino

    jpaulino Power Member

Partilhar esta Página