none
Quando apertar teclas

    Question

  • Pessoal gostaria que o campos A, B e C, recebessem apenas números inteiros e negativos (sinal de '-').

    E caso o usuário apertar qualquer tecla aparecer a mensagem de erro.

    Permitir apenas o backspace, o deletar, o tab e setas (esquerda e direita) e o resto bloquear com mensagem de erro.

    Obrigado.

    O código de meu programa de cálculo de bhaskara é esse abaixo:

    public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void btnCalcular_Click(object sender, EventArgs e)
            {
                    double a, b, c, x1, x2;

                    a = Convert.ToDouble(textBoxA.Text);
                    b = Convert.ToDouble(textBoxB.Text);
                    c = Convert.ToDouble(textBoxC.Text);

                    if ((b * b - 4 * a * c) >= 0)
                    {
                        x1 = (-b + Math.Sqrt(Math.Pow(b, 2) - 4 * a * c)) / (2 * a);
                        x2 = (-b - Math.Sqrt(Math.Pow(b, 2) - 4 * a * c)) / (2 * a);

                        textBoxMais.Text = x1.ToString();
                        textBoxMenos.Text = x2.ToString();
                    }
                    else
                    {
                        MessageBox.Show("Essa equação não possui raízes reais.");
                    }
            }

            private void btnSair_Click(object sender, EventArgs e)
            {
                if (MessageBox.Show("Deseja sair do programa?", "Finalizando", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    Application.Exit();
                }
            }

            private void btnLimpar_Click(object sender, EventArgs e)
            {
                textBoxA.Clear();
                textBoxB.Clear();
                textBoxC.Clear();
                textBoxMais.Clear();
                textBoxMenos.Clear();

                textBoxA.Focus();
            }

            private void textBoxMenos_TextChanged(object sender, EventArgs e)
            {

            }

            private void Form1_Load(object sender, EventArgs e)
            {
                textBoxMais.ReadOnly = true;
                textBoxMenos.ReadOnly = true;
            }

            private void textBoxA_KeyPress(object sender, KeyPressEventArgs e)
            {
                int isNumber = 0;

                //Verifica se é número ou vírgula.
                if (int.TryParse(e.KeyChar.ToString(), out isNumber) == false && e.KeyChar != (char)8 )
                {
                    //Se não for, cancela último caracter digitado e exibe mensagem.
                    e.Handled = true;
                    MessageBox.Show("Digite apenas números", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

            private void textBoxB_KeyPress(object sender, KeyPressEventArgs e)
            {
                int isNumber = 0;

                //Verifica se é número ou vírgula.
                if (int.TryParse(e.KeyChar.ToString(), out isNumber) == false && e.KeyChar != (char)8)
                {
                    //Se não for, cancela último caracter digitado e exibe mensagem.
                    e.Handled = true;
                    MessageBox.Show("Digite apenas números", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

            private void textBoxC_KeyPress(object sender, KeyPressEventArgs e)
            {
                int isNumber = 0;

                //Verifica se é número ou vírgula.
                if (int.TryParse(e.KeyChar.ToString(), out isNumber) == false && e.KeyChar != (char)8)
                {
                    //Se não for, cancela último caracter digitado e exibe mensagem.
                    e.Handled = true;
                    MessageBox.Show("Digite apenas números", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
    }

    Tuesday, October 09, 2012 1:04 PM

Answers

  • private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (!char.IsDigit(e.KeyChar) && e.KeyChar != '\b')
                {
                    e.Handled = true;
                }
            }

    "!char.IsDigit" libera apenas números,  '\b' libera a tecla Backspace. As teclas Home, End, Esc, Delete e setas não são bloquadas.

    Wednesday, October 10, 2012 10:42 PM

All replies