O programa está compilando e rodando normalmente, só que quando eu vou cadastrar uma nova conta ocorre que ao clicar no botão de confirmação o programa retorna com um erro de referencia de objeto não definida para uma instancia de um objeto bem na hora de somar um na variável que alimenta o array dentro do "AdicionaConta".
''' 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 formularios { public partial class Principal : Form { private Conta[] ctas; //Criamos aqui um ATRIBUTO que guardará nosso array de contas int tipo = 0; private int qtdContas = 0; public Principal() { InitializeComponent(); }
private void cbcontas_SelectedIndexChanged(object sender, EventArgs e) { int indice = cbcontas.SelectedIndex; Conta contaSelecionada = this.ctas[indice];
this.Mostrar(contaSelecionada);
}
private void Mostrar(Conta contaSelecionada) { //txtnumero.Text = Convert.ToString(contaSelecionada.Numero); //txtsaldo.Text = Convert.ToString(contaSelecionada.Saldo); //txttitular.Text = contaSelecionada.titular; }
private Conta Buscar() { int chave = cbDestinatario.SelectedIndex; return this.ctas[chave]; }
private void operacao() { if (cbDestinatario.SelectedIndex < 0) { cbDestinatario.SelectedIndex = cbcontas.SelectedIndex; } string txtValor = txtVlr.Text; int indice = cbcontas.SelectedIndex; int inddest = cbDestinatario.SelectedIndex; Conta ctadst = this.ctas[cbDestinatario.SelectedIndex];
Conta ctaope = this.ctas[indice]; double vlrOpe = Convert.ToDouble(txtValor); if (vlrOpe <= 0) { MessageBox.Show("É necessário informar o valor da Operação!"); } else if (tipo == 1 && vlrOpe > 0 && vlrOpe > ctaope.Saldo) { MessageBox.Show("Saldo Insuficiente para esse saque!"); } else if (tipo == 3 && cbDestinatario.Text == "") { MessageBox.Show("É necessário um Destinatário para a Transferência!"); } else { if (tipo == 1) //Saques ctaope.saca(vlrOpe); else if (tipo == 2) //Depósitos ctaope.deposita(vlrOpe); else if (tipo == 3) //Transferências ctaope.transfere(vlrOpe, ctadst); this.Mostrar(ctaope); } txtVlr.Text = "0"; }
public void AdicionaConta(Conta cc) { this.ctas[this.qtdContas] = cc; this.qtdContas++;
cbcontas.Items.Add(cc); //adicionamos aqui a conta na combobox }
private void btSaque_Click(object sender, EventArgs e) { tipo = 1; //Saques operacao(); }
private void btDeposita_Click(object sender, EventArgs e) { tipo = 2; //Despósitos operacao(); }
private void btTransfere_Click(object sender, EventArgs e) { tipo = 3; //Transferências operacao(); }
private void button1_Click(object sender, EventArgs e) { CadastroDeContas cadastro = new CadastroDeContas(this); //Vai iniciar a tela de cadastro de conta corrente
cadastro.ShowDialog(); //Aqui iremos exibir a tela de cadastro de conta corrente }
} } '''