Erro ao converter para decimal

24/06/2013

0

Olá, gente.
Tenho três textbox e quero que quando o usuário for digitando nos dois primeiros, já vá atualizando o terceiro com a soma desses dois.
No evento TextChanged dos dois primeiros eu coloquei assim:
private void textBox1_TextChanged(object sender, EventArgs e)
{
    decimal total = Convert.ToDecimal(textBox1.Text + textBox2.Text);
    textBox3.Text = total.ToString();
}

private void textBox2_TextChanged(object sender, EventArgs e)
{
    decimal total = Convert.ToDecimal(textBox1.Text + textBox2.Text);
    textBox3.Text = total.ToString();
}

Só que ao invés de somar como número, está juntando o texto do primeiro com o segundo. Tipo: 1+1=11. Mesmo eu convertendo para decimal, como podem ver.
Tem como corrigir esse problema e somar o conteúdo dos textbox como número mesmo?
Obrigada desde já,
Rachel Andrade

Rachel Andrade

Responder

Posts

24/06/2013

Thiago Porto

private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text <> '' && textBox2.Text <> '')
{
decimal total = Convert.ToDecimal(textBox1.Text) + Convert.ToDecimal(textBox2.Text);
textBox3.Text = total.ToString();
}
}

é bom fazer um teste assim:
Responder

24/06/2013

Rachel Andrade

Obrigada, Thiago.
Será que foi só isso aqui o problema:
Convert.ToDecimal(textBox1.Text) + Convert.ToDecimal(textBox2.Text);

Você converteu um por um e eu estava convertendo os dois juntos.
Responder

24/06/2013

Thiago Porto

Isso, você estava concatenando o valor dos textbox.
Responder

24/06/2013

Rachel Andrade

Muito obrigada, Thiago.
Aproveitei e inseri essa verificação que você sugeriu.
Problema resolvido.
Responder

24/06/2013

Joel Rodrigues

Obrigado pelo retorno.
Tópico concluído.
Responder

24/06/2013

Pjava

Você até poderia converter os dois de uma vez, acontece que você estava concatenando as string que vinham dos textbox. Até a conversão dos valores, elas são string e o sinal + entre duas strings concatena e não soma. O que o thiago sugeriu é que você testasse primeiro para ver se há ou não valores e depois partiu para a conversão(valores válidos), nesse caso fez um a um, devido os texbox te retornarem string. Sempre que formos trabalhar com campos assim, é sempre bom antes de qualquer operação, fazermos um teste se há ou não valores a serem operados, para evitar NullException e outros inconvenientes.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar