none
System.FormatException: 'A cadeia de caracteres de entrada não estava em um formato correto.' RRS feed

  • Pergunta

  • Pessoal, boa tarde!

    Estou criando um programa Windows form no C# bem simples, onde o form do mesmo possui o código abaixo. Utilizei o MessageBox.Show para solicitar se haverá deposito inicial na conta, onde caso o usuário clique em sim, o IF apenas alterar a propriedade do campo  txtSaldo.Visible para true. No entanto, se eu rodar o programa assim, o mesmo apresenta erro System.FormatException: 'A cadeia de caracteres de entrada não estava em um formato correto., em um campo fora do IF. Se eu comentar o bloco do IF todo o código é executado em erros. Onde estou errando? Comecei tem pouco tempo na área de desenvolvimento.

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

            private void btnCadastrarCli_Click(object sender, EventArgs e)
            {

                int tempConta = int.Parse(txtNumConta.Text);
                string tempNome = txtNomeCliente.Text;
                double tempSaldo = 0.0;
                Banco b;
                
                if (MessageBox.Show("Haverá valor de depósito?", "Depósito Inicial", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    txtSaldo.Visible = true;
                }
                else
                {
                    b = new Banco(tempConta, tempNome);
                    label1.Text = b.ToString();
                }
      
                tempSaldo = double.Parse(txtSaldo.Text, (CultureInfo.InvariantCulture));
                b = new Banco(tempConta, tempNome, tempSaldo);
                label1.Text = b.ToString();
            }
        }
    }

    segunda-feira, 19 de novembro de 2018 18:00

Respostas

  • Testei seu código e o problema esta sendo gerado quando faz a conversão, o valor nã pode ser convertido, para contornar você pode criar uma instrução try catch ou use a instrução a seguir como conversão : 

     tempSaldo = (double.TryParse(txtSaldo.Text, out tempSaldo)) ? tempSaldo : 0;

    O TryParse faz a conversão e se consegue retorna true, caso isto aconteça repassa o valor senão tempsaldo é igual a zero, espero ter ajudado.

    Se a resposta contribuiu com seu aprendizado por favor marque como Útil
    Se solucionou seu problema por favor marque como Resposta
    Atenção, se seu problema foi resolvido não deixe o post aberto  

    Visite :  www.codigoexpresso.com.br


    terça-feira, 20 de novembro de 2018 18:08

Todas as Respostas

  • Boa tarde, Edgar Silveira Jardim. Tudo bem?

    Obrigado por usar o fórum MSDN.

    Conseguiu algum avanço no teu caso? O que ainda precisa?

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 20 de novembro de 2018 18:07
    Moderador
  • Testei seu código e o problema esta sendo gerado quando faz a conversão, o valor nã pode ser convertido, para contornar você pode criar uma instrução try catch ou use a instrução a seguir como conversão : 

     tempSaldo = (double.TryParse(txtSaldo.Text, out tempSaldo)) ? tempSaldo : 0;

    O TryParse faz a conversão e se consegue retorna true, caso isto aconteça repassa o valor senão tempsaldo é igual a zero, espero ter ajudado.

    Se a resposta contribuiu com seu aprendizado por favor marque como Útil
    Se solucionou seu problema por favor marque como Resposta
    Atenção, se seu problema foi resolvido não deixe o post aberto  

    Visite :  www.codigoexpresso.com.br


    terça-feira, 20 de novembro de 2018 18:08