none
Quero Limitar o valor que pode ser digitado em uma textbox entre 0 e 2 RRS feed

  • Pergunta

  • Então usando c#, windowsform quero limitar para que não possa colocar valores acima de 2, usei este código 

    if ((e.KeyChar < '0' || e.KeyChar > '2') &&
                (e.KeyChar != ',' && e.KeyChar != '.' &&
                 e.KeyChar != (Char)13 && e.KeyChar != (Char)8))
                {
                    e.KeyChar = (Char)0;
                }
                else
                {
                    if (e.KeyChar == '.' || e.KeyChar == ',')
                    {
                        if (!NotaLPT.Text.Contains(','))
                        {
                            e.KeyChar = ',';
                        }
                        else
                        {
                            e.KeyChar = (Char)0;

    Desta forma há formatação tudo correto o unico problema é que quando coloco um valor na textbox decimal por exemplo 1,6 o 6 não aparece apenas valores menores que 2 como por exemplo 1,2, o que eu quero é limitar entre 0 e 2 inteiros para que seja possivel colocar 1,3, 1,4, 1,5, etc até o 2 e não seja possivel colocar 3 por exemplo

    quinta-feira, 19 de janeiro de 2017 18:45

Respostas

  • Segue código

    private void textBox1_Validated(object sender, EventArgs e)
            {
                textBox1.Text = Convert.ToDecimal(textBox1.Text).ToString("###,###.00");
                if (Convert.ToDecimal(textBox1.Text) < 0 || Convert.ToDecimal(textBox1.Text) > 2)
                {
                    MessageBox.Show("Nota inválida");
                    textBox1.Focus();
                }
            }
    
      private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != ','))
                {
                    e.Handled = true;
                    MessageBox.Show("este campo aceita somente numero e virgula");
                }
                if ((e.KeyChar == ',') && ((sender as TextBox).Text.IndexOf('.') > -1))
                {
                    e.Handled = true;
                    MessageBox.Show("este campo aceita somente uma virgula");
                }
            }


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    • Marcado como Resposta Guilherme1974 quinta-feira, 19 de janeiro de 2017 19:13
    quinta-feira, 19 de janeiro de 2017 18:59