none
TextBox que aceita apenas Letras e a tecla Backspace RRS feed

  • Pergunta

  • Boa tarde pessoal.

    Estou desenvolvendo um programa no qual existe uma TextBox, esta sera usada para pesquisar palavras que começam com a letra que for adicionada.

    Eu ja consegui fazer com que a TextBox só aceite letras. porem não aceita o Backspace:

    if (!char.IsLetter(e.KeyChar))
                    {
                        e.Handled = true;
                    }
                    else
                    {
                        e.Handled = false;
                    }

    Como fazer ela aceitar a tecla Backspace e aceitar apenas uma letra. este código permite varias letras. mas o essencial seria apenas uma.

    segunda-feira, 23 de março de 2015 19:24

Respostas

  • Olá!
    Outra boa sugestão pode ser esta:

    private void TextBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)

    {

                    if (!(char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar))) {

                                   e.Handled = true;

                    }

    }

    Somente com a tecla "BackSpace", como desejas.


    MS INFORMATICA - Projeto Marinner

    segunda-feira, 23 de março de 2015 20:01
  • Boa tarde Guilherme Cristino.

    Pode ser util para você:

    MeuTextBox.MaxLength = 1;

    Definir o máximo de caracteres que um usuário pode digitar.

    MeuTextBox.MinLines = 1;

    Definir o numero minimo de linhas que o textbox vai se expandir para acomodar o texto.

    MeuTextBox.MaxLines = 5;

    Definir o numero máximo de linhas que o textbox vai se expandir para acomodar o texto.

    Abraços! 

    _________________________________________________

    Ajude um amigo que eu lhe ajudarei também.


    terça-feira, 24 de março de 2015 17:10

Todas as Respostas

  • (char)8 corresponde ao backspace.

    Mude o código para o seguinte:

    if (!char.IsLetter(e.KeyChar) || e.KeyChar != (char)8)
                    {
                        e.Handled = true;
                    }
                    else
                    {
                        e.Handled = false;
                    }

    Douglas Franco www.dzfweb.com.br

    segunda-feira, 23 de março de 2015 19:25
  • Olá!
    Outra boa sugestão pode ser esta:

    private void TextBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)

    {

                    if (!(char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar))) {

                                   e.Handled = true;

                    }

    }

    Somente com a tecla "BackSpace", como desejas.


    MS INFORMATICA - Projeto Marinner

    segunda-feira, 23 de março de 2015 20:01
  • Não funciona!

    Tanto as letras quanto o backspace.

    quando eu adiciono este código 

    e.KeyChar != (char)8)
    
    Não aparece nada na textbox. e se eu tiro ela volta ao normal, aceitando só letras.
    • Sugerido como Resposta César Macari quarta-feira, 24 de novembro de 2021 13:47
    segunda-feira, 23 de março de 2015 20:02
  • Ja este método:

    private void TextBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)

    {

                    if (!(char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar))) {

                                   e.Handled = true;

                    }

    }

    Funcionou. agora a ultima questão, como fazer a textBox só aceitar letras?

    segunda-feira, 23 de março de 2015 20:06
  • Para só letras:

    private void TextBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)

    {

                    if ((Strings.Asc(e.KeyChar) >= 48 & Strings.Asc(e.KeyChar) <= 57)) {

                                   e.Handled = true;

                                   e = null;

                    }

    }

    Outro exemplo mais prático:

    private void TextBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)

    {

                    if (char.IsNumber(e.KeyChar)) {

                                   e.Handled = true;

                    }

    }

     

    NOTA: Para letras, é liberada a tecla "Space"para os espaços entre palavras.

    Abraço!


    MS INFORMATICA - Projeto Marinner


    segunda-feira, 23 de março de 2015 20:18
  • Para só letras:

    private void TextBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)

    {

                    if ((Strings.Asc(e.KeyChar) >= 48 & Strings.Asc(e.KeyChar) <= 57)) {

                                   e.Handled = true;

                                   e = null;

                    }

    }


    MS INFORMATICA - Projeto Marinner

    Esta certo, obrigado.

    A ultima pergunta. desculpa se estou sendo um incomodo.

    Como fazer a textbox só aceitar uma letra?

    segunda-feira, 23 de março de 2015 20:26
  • Boa tarde Guilherme Cristino.

    Pode ser util para você:

    MeuTextBox.MaxLength = 1;

    Definir o máximo de caracteres que um usuário pode digitar.

    MeuTextBox.MinLines = 1;

    Definir o numero minimo de linhas que o textbox vai se expandir para acomodar o texto.

    MeuTextBox.MaxLines = 5;

    Definir o numero máximo de linhas que o textbox vai se expandir para acomodar o texto.

    Abraços! 

    _________________________________________________

    Ajude um amigo que eu lhe ajudarei também.


    terça-feira, 24 de março de 2015 17:10
  • obrigado, deu certo. 
    terça-feira, 24 de março de 2015 19:39
  • obrigado, deu certo. 

    Opa, amigo!
    Precisei sair para dar suporte onde presto meus serviços. Mas a turma é fera! A gente se desenrola, rsrs... abraço!

    MS INFORMATICA - Projeto Marinner

    terça-feira, 24 de março de 2015 19:46
  • Boa tarde Márcio Silva Lima.

    Estou querendo restringir o TextBox que tenho no programa em WPF C# também aproveitando esse thread. Como faço para restringir o  textbox que tenho a aceitar somente letras e o Space?

    Abraços! 

    _________________________________________________

    A arte de programar consiste na arte de organizar e dominar a complexidade.


    terça-feira, 24 de março de 2015 20:22
  • Para só letras:

    private void TextBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)

    {

                    if ((Strings.Asc(e.KeyChar) >= 48 & Strings.Asc(e.KeyChar) <= 57)) {

                                   e.Handled = true;

                                   e = null;

                    }

    }

    MS INFORMATICA - Projeto Marinner

    Beleza, este caso deu certo comigo, mas ele ainda está aceitando caracteres especiais, faço pra bloquear esses caracteres?
    terça-feira, 19 de junho de 2018 15:10