Como fazer o TextBox permitir apenas números em C#

Olá programadores C#,

Esta é uma forma bastante utilizada para validar entrada de texto de usuários. Para fazermos com que o TextBox não aceite outros valores além de números basta acrescentarmos um trecho de validação de teclas no evento KeyPress. Para isso basta selecionar o TextBox desejado e, na tela de propriedades dele, clique na aba de eventos (conforme imagem abaixo) e de um duplo clique no evento KeyPress.



O VisualStudio criará o método para tratar o evento. Dentro deste método você deve acrescentar o seguinte código em destaque:

        private void tbExemplo_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Se a tecla digitada não for número
            if (!char.IsDigit(e.KeyChar))
            {
                //Atribui True no Handled para cancelar o evento
                e.Handled = true;
            }
        }


Porém fazendo isto não é possível usar algumas teclas, já que tudo que não é dígito não passa no validador e é bloqueado.
Provavelmente você precisará liberar a tecla BackSpace, por exemplo. Para isso precisamos saber qual seu valor decimal na tabela ASCII de caracteres, que com uma rápida consulta descobrimos que é o número 08.

Agora basta adicionar uma nova validação no if, que verifica se o valor decimal que representa a tecla digitada é ou não 08, ficando assim:

        private void tbExemplo_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Se a tecla digitada não for número e nem backspace
            if (!char.IsDigit(e.KeyChar) && e.KeyChar != 08)
            {
                //Atribui True no Handled para cancelar o evento
                e.Handled = true;
            }
        }

Pronto! Com este exemplo agora é possível liberar a entrada de dados nos TextBoxes apenas de números e qualquer outra tecla que necessitar.

Fico por aqui.
Até o próximo post.

16 comentários:

  1. Parabéns João Paulo pelo ótimo tutorial.
    Atenciosamente,
    Carlos Henrique - Regeneração - Piauí

    ResponderExcluir
  2. Ola João Paulo parabéns pelo ótimo post e pela vontade de ajudar, fica aqui meus agradecimentos, me ajudou muito. abraços.

    ResponderExcluir
  3. Muito Obrigado João Paulo! Solução rápida e eficaz para o meu problema.

    ResponderExcluir
    Respostas
    1. Olá Weslen, que bom que pude ajudar.
      Obrigado pelo comentário.
      Abraço!

      Excluir
  4. Isso nao impede o usuário de fazer um CTRL+V no campo

    ResponderExcluir
  5. Gostei muito do seu tutorial, foi rápido e prático e o código fácil de entender.

    ResponderExcluir
  6. muito bom era o que eu estava precisando

    ResponderExcluir
  7. Solução rapida e facil, muito obrigado ^^

    ResponderExcluir
  8. NUNCA DEIXE DE NOS AJUDAR. GOSTEI MESMO

    ResponderExcluir
  9. Só umas permissões a mais, show me auxiliou bastante!
    if (!char.IsNumber(e.KeyChar) && !char.IsPunctuation(e.KeyChar)
    && e.KeyChar != (char)Keys.Enter && e.KeyChar != (char)Keys.Back && e.KeyChar != (char)Keys.Delete)
    {
    //Atribui True no Handled para cancelar o evento
    e.Handled = true;
    }

    ResponderExcluir
  10. Parabéns. Tutorial Excelente

    ResponderExcluir

Não esqueça de enviar um comentário. Isto motiva o autor a continuar postando e também é uma forma de agradecimento