Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Quando clico no button aparece o erro FormatException

O programa incializa porem quando clico no button aparece esse erro. O erro fica nessa parte: double valorDeposito = Convert.ToDouble(textoDoValorDoDeposito);

public partial class Form1 : Form
    {
        private Conta conta;

        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object Sender, EventArgs e)
        {
            Conta conta = new Conta();
            conta.Titular = new Cliente();
            conta.Titular.Nome = "Victor";
            conta.Numero = 1;
            conta.Deposita(250.0);

            textoSaldo.Text = Convert.ToString(conta.Saldo);
            textoNumero.Text = Convert.ToString(conta.Numero);
            textoTitular.Text = conta.Titular.Nome;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string textoDoValorDoDeposito = textoValor.Text;
            double valorDeposito = Convert.ToDouble(textoDoValorDoDeposito);
            conta.Deposita(valorDeposito);

            textoSaldo.Text = Convert.ToString(conta.Saldo);
            textoNumero.Text = Convert.ToString(conta.Numero);
            textoTitular.Text = conta.Titular.Nome;


        }
    }
2 respostas
solução!

Yuri,

O erro que está aparecendo pra você pode ter alguns motivos. Um deles é que o texto do seu textoValor.Text pode estar vazio e o método Convert.ToDouble não consegue converter string vazia. Outro motivo que pode levar a um erro é quando você tentar converter em Double um valor que não é um número, por exemplo uma letra. Outro motivo é que dependendo da configuração de idioma da sua máquina, os números decimais podem vir depois de ponto ou virgula e se você colocar errado pode dar erro. Vou deixar aqui uma sugestão pra você, do que pode ser feito para não gerar esse erro:

private void button2_Click(object sender, EventArgs e)
 {
    string textoDoValorDoDeposito = textoValor.Text;
    if (string.IsNullOrWhiteSpace(textoDoValorDoDeposito))
    {
        MessageBox.Show("Preencha o valor a ser depositado!");
        return;
    }

    double valorDeposito = 0.0;
    bool valorValido = double.TryParse(textoDoValorDoDeposito, out valorDeposito);
    if (!valorValido)
    {
        MessageBox.Show("O valor de depósito é inválido");
        return;
    }

    conta.Deposita(valorDeposito);

    textoSaldo.Text = Convert.ToString(conta.Saldo);
    textoNumero.Text = Convert.ToString(conta.Numero);
    textoTitular.Text = conta.Titular.Nome;
}

A função TryParse serve para tentar converter o valor. Caso não seja possível a função retorna false.

Qualquer dúvida não deixe de perguntar.

Abraço.

Realmente esse erro estava ocorrendo e eu não tinha parado pra pensar nisso. Porem ocorreu outro erro após isso um chamado NullException eu acho, porem ja resolvi, apenas mudei "private Conta conta" para "Conta conta = new Conta()"