3
respostas

NullReferenceException

Os campos de texto não printam os valor e tambem ao tentar realizar um deposito,aparece a seguinte exception -> NullReferenceException

3 respostas

Oi Lucas, tudo bom?

Você pode compartilhar com a gente seu código? Assim fica mais facil de ajudar =)

Aguardo retorno.

Abraço

        private Conta conta;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            this.conta = new Conta();
            this.conta.deposita(250.0);
            this.conta.Numero = 1;
            this.conta.Titular = new Cliente();
            this.conta.Titular.Nome = "Victor";
            this.conta.Numero = 1;
            this.conta.deposita(250.0);
            this.mostraConta();

        }

        private void Depositar_Click(object sender, EventArgs e)
        {
            string textoDoValorDoDeposito = textoValor.Text;
            double valorDeposito = Convert.ToDouble(textoDoValorDoDeposito);
            this.conta.deposita(valorDeposito); // <- O problema é apontado aqui//
            this.mostraConta();
        }

        public void mostraConta()
        {
            textoNumero.Text = Convert.ToString(this.conta.Numero);
            textoSaldo.Text = Convert.ToString(this.conta.Saldo);
            textoTitular.Text = this.conta.Titular.Nome;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string textoDoValorDoSaque = textoValor.Text;
            double valorSaque = Convert.ToDouble(textoDoValorDoSaque);
            this.conta.saca(valorSaque);

            this.mostraConta();
        }




    }
}

Segundo o código desse capitulo, temos:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CaixaEletronico
{
    public partial class Form1 : Form
    {
        Conta conta;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.conta = new Conta();
            this.conta.Titular = new Cliente();

            this.conta.Titular.Nome = "Victor";
            this.conta.Numero = 1;
            this.conta.Deposita(250.0);

            this.MostraConta();
        }

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

            this.MostraConta();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string textoDoValorDoSaque = textoValor.Text;
            double valorSaque = Convert.ToDouble(textoDoValorDoSaque);
            this.conta.Saca(valorSaque);

            this.MostraConta();
        }

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

Mas, não consigo encontrar nenhum problema evidente. Talvez você consiga enxergar alguma diferença.

Entretanto, se temos NullReferenceException nessa linha:

            this.conta.deposita(valorDeposito); // <- O problema é apontado aqui//

Significa que a conta do seu formulário está vazia:

this.conta // esse cara está nulo

Caso não haja nenhum problema de digitação que eu não peguei, significa que o form1_load não está sendo invocado. Para garantir, tenta adicionar um MessageBox.Show no form1_load, para ver se está realmente passando por lá. Algo como:

 private void Form1_Load(object sender, EventArgs e)
        {
            MessageBox.Show("Entrou!");
            this.conta = new Conta();
            this.conta.deposita(250.0);
            this.conta.Numero = 1;
            this.conta.Titular = new Cliente();
            this.conta.Titular.Nome = "Victor";
            this.conta.Numero = 1;
            this.conta.deposita(250.0);
            this.mostraConta();
        }