Usuário com melhor resposta
A cadeia de caracteres de entrada não estava em um formato incorreto.

Pergunta
-
Olá. Estou com uma dúvida. Vi outros tópicos parecidos, mas não consegui resolver meu problema. Se alguém puder me ajudar, meu código é esse:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
int Cnh = 0;
Cnh = int.Parse(Txt_Cnh.Text);
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
double Multas = 0;
Multas = int.Parse(Txt_Qtd.Text);
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
double Val = 0;
Val = double.Parse(Txt_Valor.Text);
}
private void button1_Click(object sender, EventArgs e)
{
double Val, Total;
int Multas, Cnh;
Cnh = int.Parse(Txt_Cnh.Text);
Multas = int.Parse(Txt_Qtd.Text);
Val = double.Parse(Txt_Valor.Text);
if (Cnh > 0 && Cnh < 4328)
{
Total = (Val) * (Multas);
Result.Text = Total.ToString();
}
else
{
MessageBox.Show ("CNH incorreta!");
}
}
private void label5_Click(object sender, EventArgs e)
{
double Total = 0;
Total = double.Parse(Result.Text);
}
private void button2_Click(object sender, EventArgs e)
{
int Cnh;
double Total, Soma = 0;
Cnh = int.Parse(Txt_Cnh.Text);
while (Cnh > 0 && Cnh < 4328)
{
Total = double.Parse(Result.Text);
Soma = Soma + Total;
Txt_Cnh.Text = string.Empty;
Txt_Qtd.Text = string.Empty;
Txt_Valor.Text = string.Empty;
Result.Text = string.Empty;
}
}
private void button3_Click(object sender, EventArgs e)
{
int Maior = 0, Cnh, Multas, MaiorCnh;
Cnh = int.Parse(Txt_Cnh.Text);
Multas = int.Parse(Txt_Qtd.Text);
if (Multas > Maior)
{
Maior = Multas;
MaiorCnh = Cnh;
}
}
private void label6_Click(object sender, EventArgs e)
{
int MaiorCnh;
double Soma;
MaiorCnh = int.Parse("A CNH " + label6 + " tem mais multas.");
Soma = double.Parse("Total de recursos arrecadados R$" + label6);
}
}
}
Qdo apago o número, ou clico no botão 2 ele dá o erro "A cadeia de caracteres de entrada não estava em um formato incorreto.". Desde já agradeço.
Respostas
-
Remove essa parte ou comenta no seu código, você já esta fazendo isso no botão e testa novamente:
private void textBox2_TextChanged(object sender, EventArgs e) { //double Multas = 0; //Multas = int.Parse(Txt_Qtd.Text); } private void textBox3_TextChanged(object sender, EventArgs e) { //double Val = 0; // Val = double.Parse(Txt_Valor.Text); }
- Marcado como Resposta Bettoo quinta-feira, 6 de novembro de 2014 12:45
-
troca seu while por if ja que você so esta fazendo uma comparação não precisa utilizar ele senão fica em loop:
if (Cnh > 0 && Cnh < 4328) { Total = double.Parse(Result.Text); Soma = Soma + Total; Multas = int.Parse(Txt_Qtd.Text); if (Multas > Maior) { Maior = Multas; MaiorCnh = Cnh; } }
- Editado Glauber Marcelino da Silva (MrGmsoft) quinta-feira, 6 de novembro de 2014 12:58
- Marcado como Resposta Bettoo quinta-feira, 6 de novembro de 2014 13:14
Todas as Respostas
-
Verifica o que essas conversões estão retornando
Cnh = int.Parse(Txt_Cnh.Text); while (Cnh > 0 && Cnh < 4328) { Total = double.Parse(Result.Text); Soma = Soma + Total; Txt_Cnh.Text = string.Empty; Txt_Qtd.Text = string.Empty; Txt_Valor.Text = string.Empty; Result.Text = string.Empty; }
-
-
-
-
É por que você colocou no evento textChanged ou seja toda vez que alterar ele vai atribuir um valor para a conversão:
private void textBox2_TextChanged(object sender, EventArgs e)
{
double Multas = 0;
if(Txt_Qtd.Text!=null)
{ Multas = int.Parse(Txt_Qtd.Text);
}
else
{
Multas= 0;
}
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
double Val = 0;if(Txt_Valor.Text!=null)
{
Val = double.Parse(Txt_Valor.Text);
}
else{
Val=0;
}
}
- Editado Glauber Marcelino da Silva (MrGmsoft) quinta-feira, 6 de novembro de 2014 12:22
-
-
Remove essa parte ou comenta no seu código, você já esta fazendo isso no botão e testa novamente:
private void textBox2_TextChanged(object sender, EventArgs e) { //double Multas = 0; //Multas = int.Parse(Txt_Qtd.Text); } private void textBox3_TextChanged(object sender, EventArgs e) { //double Val = 0; // Val = double.Parse(Txt_Valor.Text); }
- Marcado como Resposta Bettoo quinta-feira, 6 de novembro de 2014 12:45
-
-
Se puder continuar me ajudando...rs
Agora para aqui. O mesmo erro.
private void button2_Click(object sender, EventArgs e)
{
int Maior = 0, Cnh, Multas, MaiorCnh;
double Total, Soma = 0;
Cnh = int.Parse(Txt_Cnh.Text);
while (Cnh > 0 && Cnh < 4328)
{
Total = double.Parse(Result.Text);
Soma = Soma + Total;
Multas = int.Parse(Txt_Qtd.Text);
if (Multas > Maior)
{
Maior = Multas;
MaiorCnh = Cnh;
}
Txt_Cnh.Text = "";
Txt_Qtd.Text = "";
Txt_Valor.Text = "";
Result.Text = "";
}
} -
Se puder continuar me ajudando...rs
Agora para aqui. O mesmo erro.
private void button2_Click(object sender, EventArgs e)
{
int Maior = 0, Cnh, Multas, MaiorCnh;
double Total, Soma = 0;
Cnh = int.Parse(Txt_Cnh.Text);
while (Cnh > 0 && Cnh < 4328)
{
Total = double.Parse(Result.Text);
Soma = Soma + Total;
Multas = int.Parse(Txt_Qtd.Text);
if (Multas > Maior)
{
Maior = Multas;
MaiorCnh = Cnh;
}
Txt_Cnh.Text = "";
Txt_Qtd.Text = "";
Txt_Valor.Text = "";
Result.Text = "";
}
}
private void button2_Click(object sender, EventArgs e) { int Maior = 0, Cnh, Multas, MaiorCnh; double Total, Soma = 0; Cnh = int.Parse(Txt_Cnh.Text); while (Cnh > 0 && Cnh < 4328) { Total = double.Parse(Result.Text); Soma = Soma + Total; Multas = int.Parse(Txt_Qtd.Text); if (Multas > Maior) { Maior = Multas; MaiorCnh = Cnh; } } //Fora do while pode limpar o textBox Txt_Cnh.Text = ""; Txt_Qtd.Text = ""; Txt_Valor.Text = ""; Result.Text = ""; }
-
-
troca seu while por if ja que você so esta fazendo uma comparação não precisa utilizar ele senão fica em loop:
if (Cnh > 0 && Cnh < 4328) { Total = double.Parse(Result.Text); Soma = Soma + Total; Multas = int.Parse(Txt_Qtd.Text); if (Multas > Maior) { Maior = Multas; MaiorCnh = Cnh; } }
- Editado Glauber Marcelino da Silva (MrGmsoft) quinta-feira, 6 de novembro de 2014 12:58
- Marcado como Resposta Bettoo quinta-feira, 6 de novembro de 2014 13:14
-
-
-
-
Não querendo abusar, sabe como faço para mostrar a CNH com mais multas e o total das multas arrecadadas?
coloquei nessa parte:
private void button2_Click(object sender, EventArgs e)
{
int Maior = 0, Cnh, Multas, MaiorCnh;
double Total, Soma=0;
Cnh = int.Parse(Txt_Cnh.Text);
if (Cnh > 0 && Cnh < 4328)
{
Total = double.Parse(Result.Text);
Soma = Soma + Total;
Multas = int.Parse(Txt_Qtd.Text);
if (Multas > Maior)
{
Maior = Multas;
MaiorCnh = Cnh;
label6.Text = Soma.ToString();
label7.Text = MaiorCnh.ToString();
}
}
Txt_Cnh.Text = "";
Txt_Qtd.Text = "";
Txt_Valor.Text = "";
Result.Text = "";
}
private void label6_Click(object sender, EventArgs e)
{
double Soma;
Soma = double.Parse(label6.Text);
}
private void label7_Click(object sender, EventArgs e)
{
int MaiorCnh;
MaiorCnh = int.Parse(label7.Text);
}
}
}
-
-
-
-
-
Nesse caso seria melhor você criar uma classe para armazenar (cnh,pontos,valor_multa,qtd_multa), pois da maneira que esta o programa só faz isso somente para uma cnh:
Vê nesse tutorial como criar classes:
http://www.macoratti.net/12/01/c_stc1.htm
Vê só, recoloquei o while e adicionei um contador mais isso so vai funcionar com varias cnhs com mesmo valor de multa informado na textBox e vou verificando até o limite 4328, o mais recomendavel é seguir o que falei acima sobre classes.
private void button2_Click(object sender, EventArgs e) { int Maior = 0, Cnh, Multas, MaiorCnh; double Total, Soma=0; Cnh = int.Parse(Txt_Cnh.Text); while(Cnh > 0 && Cnh < 4328) { Total = double.Parse(Result.Text); Soma = Soma + Total; Multas = int.Parse(Txt_Qtd.Text); if (Multas > Maior) { Maior = Multas; MaiorCnh = Cnh; label6.Text = Soma.ToString(); label7.Text = MaiorCnh.ToString(); } Cnh++; } Txt_Cnh.Text = ""; Txt_Qtd.Text = ""; Txt_Valor.Text = ""; Result.Text = ""; } private void label6_Click(object sender, EventArgs e) { double Soma; Soma = double.Parse(label6.Text); } private void label7_Click(object sender, EventArgs e) { int MaiorCnh; MaiorCnh = int.Parse(label7.Text); } } }
-
-