Boa tarde, incrementei o caixa eletrônico dos curso porem esta da um exception no MostraConta
namespace CaixaEletronico
{
public partial class Form1 : Form
{
Conta[] contas;
private int quantidadeDeContas;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
contas = new Conta[20];
Conta contaDoVictor = new ContaCorrente();
contaDoVictor.Titular = new Cliente();
contaDoVictor.Titular.Nome = "Victor da Silva";
contaDoVictor.Agencia = 4770;
contaDoVictor.Numero = 123454;
contaDoVictor.Titular.cpf = "5215248765";
contaDoVictor.Titular.Rg = "25486x";
contaDoVictor.Titular.idade = "29";
contaDoVictor.Titular.sexo = "Masculino";
contas[0] = contaDoVictor;
Conta contaDoGuilherme = new ContaPoupanca();
contaDoGuilherme.Titular = new Cliente();
contaDoGuilherme.Titular.Nome = "Guilherme de Moura";
contaDoGuilherme.Agencia = 4882;
contaDoGuilherme.Numero = 678915;
contaDoGuilherme.Titular.cpf = "2154789654";
contaDoGuilherme.Titular.Rg = "214782";
contaDoGuilherme.Titular.idade = "40";
contaDoGuilherme.Titular.sexo = "Masculino";
contas[1] = contaDoGuilherme;
this.quantidadeDeContas = 20;
foreach (Conta conta in this.contas)
{
if (conta != null) {
comboContas.Items.Add(conta);
destinoDaTransferencia.Items.Add(conta);
}
}
}
private void button1_Click(object sender, EventArgs e)
{
string textoValorSaque = valorOperacao.Text;
double valorDeposito = Convert.ToDouble(textoValorSaque);
int indiceSelecionado = comboContas.SelectedIndex;
Conta contaSelecionada = this.contas[indiceSelecionado];
contaSelecionada.Deposita(valorDeposito);
MostraConta(contaSelecionada);
}
private void button2_Click(object sender, EventArgs eA)
{
string textoValorSaque = valorOperacao.Text;
double valorSaque = Convert.ToDouble(textoValorSaque);
Conta contaSelecionada = this.BuscaContaSelecionada();
try {
contaSelecionada.Saca(valorSaque);
MessageBox.Show("Dinheiro Liberado");
}
catch (SaldoInsuficienteException e)
{
MessageBox.Show("Saldo insuficiente. " + e.Message);
}
catch (ArgumentException e)
{
MessageBox.Show("Não é possível sacar um valor negativo. " + e.Message);
}
this.MostraConta(contaSelecionada);
}
private void button4_Click(object sender, EventArgs e)
{
Conta contaSelecionada = this.BuscaContaSelecionada();
int indiceDaContaDestino = destinoDaTransferencia.SelectedIndex;
Conta contaDestino = this.contas[indiceDaContaDestino];
string textoValor = valorOperacao.Text;
double valorTransferencia = Convert.ToDouble(textoValor);
contaSelecionada.TransferePara(contaDestino, valorTransferencia);
this.MostraConta(contaSelecionada);
}
public void AdicionaConta(Conta c)
{
if (this.quantidadeDeContas == this.contas.Length)
{
Conta[] novo = new Conta[this.contas.Length * 2];
for (int i = 0; i < this.quantidadeDeContas; i++)
{
novo[i] = this.contas[i];
}
this.contas = novo;
}
this.contas[this.quantidadeDeContas] = c;
this.quantidadeDeContas++;
comboContas.Items.Add(c);
}
private void MostraConta(Conta conta)
{
textoSaldo.Text = Convert.ToString(conta.Saldo);
textoAgencia.Text = Convert.ToString(conta.Agencia);
textoNumero.Text = Convert.ToString(conta.Numero);
textoTitular.Text = conta.Titular.Nome;
textoCPF.Text = conta.Titular.cpf;
textoRG.Text = conta.Titular.Rg;
textoIdade.Text = conta.Titular.idade;
textSexo.Text = conta.Titular.sexo;
}
private Conta BuscaContaSelecionada()
{
int indiceSelecionado = comboContas.SelectedIndex;
r