none
Sobre Validação RRS feed

  • Pergunta

  • Sou iniciante no VB.NET e estou usando um MaskTextBox para validar um CPF e eu gostaria que o campo só aceitasse números, se o usuário digitar letras elas não aparecessem, é possivel? Como?

     

    PS.: Alguém tem um banco de dados com as cidades brasileiras com seus códigos do IBGE. Obrigado.

    segunda-feira, 16 de abril de 2007 19:00

Respostas

  • cvinnicios,

     

    A máscara só teria efeito como eu mencionei antes se ela fosse atribuída antes da digitação. Depois que ele digitou a máscara sozinha não vai bloquear nada.

    Para bloquear durante a digitação, da forma como você está fazendo, coloque no evento Keypress do seu MaskedTextBox:

     

    If Not Char.IsDigit(e.KeyChar) Then

        e.Handled = True

    End If

     

    Abraços,
    Francisco
    OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx
    segunda-feira, 16 de abril de 2007 19:48
    Moderador

Todas as Respostas

  • cvinnicios,

     

    É só definir a mascará somente com números:

     

    999,999,999-99

     

     

    Abraços,
    Francisco
    OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx
    segunda-feira, 16 de abril de 2007 19:05
    Moderador
  • Olha, é que eu já tô usando esse formato, mas no evento LostFocus, eu gostaria de fazer é era bloquear as letras e somente os números fossem digitados.
    segunda-feira, 16 de abril de 2007 19:26
  • cvinnicios,

     

    Mas então, no MaskedTextBox, se você colocar a máscara que eu indiquei para você, mesmo que o usuário digite letras no controle, elas não serão exibidas. Ele só vai aceitar números.

     

     

    Abraços,
    Francisco
    OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx
    segunda-feira, 16 de abril de 2007 19:30
    Moderador
  • Eu fiz assim

     

    Private Sub mskCNPJ_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles mskCNPJ.LostFocus

    If mskCNPJ.Text.Length = 11 Then

    mskCNPJ.Mask = "999.999.999-99"

    radbtnPessoaFisica.Checked = True

    ElseIf mskCNPJ.Text.Length = 14 Then

    mskCNPJ.Mask = "99.999.999/9999-99"

    radbtnPessoaJur.Checked = True

    Else

    MsgBox("Formato Errado!", MsgBoxStyle.Exclamation, "Mensagem de Erro")

    mskCNPJ.Text = ""

    mskCNPJ.Focus()

    End If

    End Sub

     

    Assim ele consegue diferenciar o CPF do CNPJ, se eu configurar a mascara normalmente, eu só vou ter um formato de mascara (eu acho), e assim eu consigo conferir pela quantidade de caracteres se é CPF e CNPJ, mas se for digitado letras nas quantidades 11 ou 14, ele passa mas depois complica, dá erro (fica chamda o MsgBox), por isso eu quero bloquear as teclas de outra forma. Blz?

    segunda-feira, 16 de abril de 2007 19:41
  • cvinnicios,

     

    A máscara só teria efeito como eu mencionei antes se ela fosse atribuída antes da digitação. Depois que ele digitou a máscara sozinha não vai bloquear nada.

    Para bloquear durante a digitação, da forma como você está fazendo, coloque no evento Keypress do seu MaskedTextBox:

     

    If Not Char.IsDigit(e.KeyChar) Then

        e.Handled = True

    End If

     

    Abraços,
    Francisco
    OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx
    segunda-feira, 16 de abril de 2007 19:48
    Moderador