Os campos de texto não printam os valor e tambem ao tentar realizar um deposito,aparece a seguinte exception -> NullReferenceException
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Os campos de texto não printam os valor e tambem ao tentar realizar um deposito,aparece a seguinte exception -> NullReferenceException
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();
}