Não consigo fazer meu comboBox mostrar o nomer do Titular, se coloco o DisplayMember = "Titular" ele mostra o namespace, se eu coloco DisplayMember = "Numero" ele funciona corretamente e aparece o número da conta no comboBox. Procurei nas Dúvidas, vi que o que resolveu o problema da pessoal fazer a propriedade, no meu caso já está feita, então não sei o que fazer.
E outra pergunta, como faço pra aparecer no comboBox algo como Número: 1, ou Cliente: "Titular".
segue minha classe Conta, Cliente e Form1
namespace CaixaEletronico
{
public partial class Form1 : Form
{
private Conta [] contas;
private int quantidade;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
contas = new Conta[1];
Conta contaDoRudson = new ContaCorrente();
contaDoRudson.Titular = new Cliente();
contaDoRudson.Titular.Nome = "Rudson";
contaDoRudson.Numero = 1;
contas[0] = contaDoRudson;
for (int i = 0; i < contas.Length; i++)
{
if (contas[i] == null)
{
break;
}
comboContas.Items.Add(contas[i]);
destinoDaTransferencia.Items.Add(contas[i]);
comboContas.DisplayMember = "Titular";
destinoDaTransferencia.DisplayMember = "Numero";
}
}
Classe Conta()
namespace Caelum.CaixaEletronico.Modelo.Contas
{
public abstract class Conta
{
public int Numero { get; set; }
public Cliente Titular { get; set; }
public double Saldo { get; protected set; }
public virtual void Deposita(double valor)
{
if (valor > 0)
{
this.Saldo += valor;
}
}
public abstract void Saca(double valor);
public void TransferePara( Conta destino, double valor)
{
this.Saca(valor);
destino.Deposita(valor);
}
public double CalculaRendimentoAnual()
{
double saldoNaqueleMes = this.Saldo;
for (int i = 0; i < 12; i++)
{
saldoNaqueleMes = saldoNaqueleMes * 1.007;
}
double rendimento = saldoNaqueleMes - this.Saldo;
return rendimento;
}
}
}
Classe Cliente()
namespace Caelum.CaixaEletronico.Modelo.Usuarios
{
public class Cliente
{
public string Nome { get; set; }
public string Rg { get; set; }
public string Cpf { get; set; }
public string Endereco { get; set; }
public int Idade { get; set; }
private bool EEmancipado;
public Cliente(string nome)
{
this.Nome = nome;
}
public Cliente() { }
public bool PodeAbrirContaSozinho
{
get
{
var maiorDeIdade = this.Idade >= 18;
var emancipado = (this.EEmancipado);
var possuiCPF = !string.IsNullOrEmpty(this.Cpf);
return (maiorDeIdade || emancipado) && possuiCPF;
}
}
public bool EhMaiorDeIdade()
{
return this.Idade >= 18;
}
public override bool Equals(object obj)
{
Cliente cliente = (Cliente)obj;
return this.Rg.Equals(cliente.Rg) && this.Cpf.Equals(cliente.Cpf);
}
public override string ToString()
{
return "Nome: " + this.Nome + " RG: " + this.Rg + " CPF: " + this.Cpf;
}
}
}