Quando eu adiciono uma nova conta o nome do Titular não aparece no combobox mas sim "CaixaEletronico11.ContaCorrente", ou o tipo de conta que foi criada.
Form1
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 CaixaEletronico11
{
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 contaDoVitor = new ContaCorrente();
contaDoVitor.Titular = new Cliente();
contaDoVitor.Agencia = 123;
contaDoVitor.Numero = 111;
contaDoVitor.Deposita(1000);
contaDoVitor.Titular.Nome = "Victor";
contas[0] = contaDoVitor;
Conta contaDoMarcos = new ContaPoupanca();
contaDoMarcos.Titular = new Cliente();
contaDoMarcos.Agencia = 124;
contaDoMarcos.Numero = 121;
contaDoMarcos.Deposita(1000);
contaDoMarcos.Titular.Nome = "Marcos";
contas[1] = contaDoMarcos;
this.quantidadeDeContas = 2;
foreach (Conta conta in this.contas)
{
if(conta != null)
{
comboContas.Items.Add(conta.Titular.Nome);
comboDestinoTransf.Items.Add(conta.Titular.Nome);
}
}
}
private void comboContas_SelectedIndexChanged(object sender, EventArgs e)
{
string titularSelecionado = comboContas.Text;
Conta contaSelecionada = this.BuscaContaSelecionada();
this.MostraConta(contaSelecionada);
}
private Conta BuscaContaSelecionada()
{
int indiceSelecionado = comboContas.SelectedIndex;
return this.contas[indiceSelecionado];
}
private void MostraConta(Conta conta)
{
textTitular.Text = conta.Titular.Nome;
textAgencia.Text = Convert.ToString(conta.Agencia);
textNumero.Text = Convert.ToString(conta.Numero);
textSaldo.Text = Convert.ToString(conta.Saldo);
textValor.Text = " ";
}
private void btnDeposito_Click(object sender, EventArgs e)
{
double valor = Convert.ToDouble(textValor.Text);
int indiceSelecionado = comboContas.SelectedIndex;
Conta contaSelecionada = this.contas[indiceSelecionado];
contaSelecionada.Deposita(valor);
MostraConta(contaSelecionada);
}
private void btnSaque_Click(object sender, EventArgs e)
{
string textoValorSaque = textValor.Text;
double valorSaque = Convert.ToDouble(textoValorSaque);
Conta contaSelecionada = this.BuscaContaSelecionada();
try
{
contaSelecionada.Saca(valorSaque);
MessageBox.Show("Dinheiro Liberado");
}
catch (SaldoInsuficienteException a)
{
MessageBox.Show("Saldo insuficiente. " + a.Message);
}
catch (ArgumentException a)
{
MessageBox.Show("Não é possível sacar um valor negativo. " + a.Message);
}
this.MostraConta(contaSelecionada);
}
private void btnTransferencia_Click(object sender, EventArgs e)
{
Conta contaSelecionada = this.BuscaContaSelecionada();
int indiceDaContaDestino = comboDestinoTransf.SelectedIndex;
Conta contaDestino = this.contas[indiceDaContaDestino];
string textoValor = textValor.Text;
double valorTransferencia = Convert.ToDouble(textoValor);
contaSelecionada.Transferencia(contaDestino, valorTransferencia);
this.MostraConta(contaSelecionada);
}
public void AdicionarConta(Conta conta)
{
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] = conta;
this.quantidadeDeContas++;
comboContas.Items.Add(conta);
}
private void btnAdicionaConta_Click(object sender, EventArgs e)
{
CadastroDeContascs cadastro = new CadastroDeContascs(this);
cadastro.ShowDialog();
}
private void btnRemoveConta_Click(object sender, EventArgs e)
{
Conta conta = BuscaContaSelecionada();
this.RemoveConta(conta);
}
private void RemoveConta(Conta conta)
{
comboContas.Items.Remove(conta);
int i;
for(i=0; i < this.quantidadeDeContas; i++)
{
if(this.contas[i] == conta)
{
break;
}
while(i + 1 < this.quantidadeDeContas)
{
this.contas[i] = this.contas[i + 1];
i++;
}
}
textNumero.Text = " ";
textAgencia.Text = " ";
textSaldo.Text = " ";
textTitular.Text = " ";
textSaldo.Text = " ";
}
}
}
CadastroDeContascs
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 CaixaEletronico11
{
public partial class CadastroDeContascs : Form
{
private Form1 aplicacaoPrincipal;
public CadastroDeContascs(Form1 aplicacaoPrincipal)
{
this.aplicacaoPrincipal = aplicacaoPrincipal;
InitializeComponent();
}
private void btnCadastrar_Click(object sender, EventArgs e)
{
Conta c;
if(comboCadastro.Text.Equals("Conta Corrente"))
{
c = new ContaCorrente();
}
else if(comboCadastro.Text.Equals("Conta Poupança"))
{
c = new ContaPoupanca();
}
else
{
c = new ContaInvestimento();
}
string titular = textTitularCad.Text;
int agencia = Convert.ToInt32(textAgenciaCad.Text);
c.Agencia = agencia;
c.Numero = Convert.ToInt32(textNumeroCad.Text);
c.Titular = new Cliente();
c.Titular.Nome = titular;
this.aplicacaoPrincipal.AdicionarConta(c);
}
private void comboCadastro_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void CadastroDeContascs_Load(object sender, EventArgs e)
{
this.comboCadastro.Items.Add("Conta Corrente");
this.comboCadastro.Items.Add("Conta Poupança");
this.comboCadastro.Items.Add("Conta Investimento");
}
}
}