Ir para conteúdo
Fórum Script Brasil
  • 0

Erro em calculo no C#


WagnerH

Pergunta

Por favor, estou aprendendo a programar agora.

Fiz uma calculadora, mas quero saber como fazer para meu textBox não aceitar letras e simbolos (a,b,c, +, -, *, /, @...) ao digitar algo lá.

Quero que essa minha textBox só aceite numeros, porque quando eu digito "sem querer" qualquer coisa que não seja um numero e clico no botão para calcular (soma, subtração, multiplicação, etc) sempre da um erro e depois fecha o programa.

Indo direto ao ponto: como fazer para que esse meu textBox só aceite numeros (e o Backspace, para apagar caso tenha digitado numeros errados), igual ao do Windows mesmo que não aceita nada alem de numeros??

Eu estava usando o IF, mas vi que está completamente errado, porque se eu tento digitar o 12, já não aceita nada

private void textBox1_TextChanged(object sender, EventArgs e)
         {
             
             if ((textBox1.Text != "1") || (textBox1.Text != "2") || (textBox1.Text != "3") || (textBox1.Text != "4") || (textBox1.Text != "5") ||
                 (textBox1.Text != "6") || (textBox1.Text != "7") || (textBox1.Text != "8") || (textBox1.Text != "9") || (textBox1.Text != "0"))

                                 text.Box1 = "";

          }
Tenho duas textBox para ser digitado o 1º e o 2º numero, depois clico num botão para calcular, por exemplo o de SOMAR:
private void button1_Click_1(object sender, EventArgs e)
        {
            double valor1, valor2, resultado;
            valor1 = Convert.ToDouble(textBox1.Text);
            valor2 = Convert.ToDouble(textBox2.Text);

            resultado = valor1 + valor2;

            lblResultado.Text = resultado.ToString();

        }

Acho que este código deve estar horrivel, mas como eu disse ainda estou aprendendo, acho que um "enquanto" ou um "repita até" deve ficar melhor, mas o problema é que não sei fazer.

alguém pode me ajudar?

Por favor ! ;)

Editado por WagnerH
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Eu nunca trabalhei com textbox, mas caso eu fosse fazer essa verificação eu faria algo seguinte:

- receber, inicialmente, o numero de algarismos do numero a ser digitado

- receber cada caracter individualmente, e verificar se ele é um algarismo

- armazenar cada numero em um vetor

- montar o numero, baseado em potencias de 10

ai vai, mais ou menos, como ficaria

scanf("%d", numeroalgarismos);

for(i=0;i<numeroalgarismos;i++)
{
scanf("%c", c); // c é uma variavel CHAR para armazenar os caracteres inseridos
if (0<=(c-48) && (c-48)<=9) //isso garante que c é um numero! mais adiante eu explico o por que do (c-48)
    numero[i] = c-48;
else
    printf("O caractere digitado não é um algarismo!!");
}
j=0;
numero1 = 0;
for(i=numeroalgarismos-1;i>=0;i++)
{
numero1 = numero1 + numero[j] * pow(10,i); // j é uma variavel pra percorrer o vetor, enquanto i vai ser a potencia de 10 pela qual sera multiplicada cada algarismo, pra formar o numero da maneira certa!
j++;
}

Escrevi esse codigo em 5min, e não verifiquei, devem ter erros, com certeza! o intuito é passar a ideia e mais ou menos como eu realizaria esta ideia

A historia de subtrair 48 de c é bem simples, cada caracter do teclado tem um numero associado.

O numero "0" é u mcaracter representado pelo numero 48.

Quando armazenos "0" em uma variavel tipo char, ela na verdade armazena o numero 48, e ao pedir para imprimir esse char como um inteiro, ele ira imprimir esse numero, 48!

os outros algarismos, "1", "2", "3"... estão todos sequenciais depois do 48! de modo que 49 representa o 1, e assim por diante. Dessa forma, podemos facilmente pegar um algarismo que é um char e transformar ele em um int, podendo até usa-lo em uma conta (como eu de fato fiz, ao atribuir numero = c-48)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...