Como definir um atributo de uma subclasse para ser exibido no lugar do nome do objeto no combobox?
Como definir um atributo de uma subclasse para ser exibido no lugar do nome do objeto no combobox?
Oi Samir,
Eu não estou bem certo da pergunta, mas vou chutar aqui. Você precisa definir um método na mãe e sobreescrever esse método na filha. Dessa forma vc vai usar o polimorfismo na hora de preencher o combo.
No curso ensina a armazenar os objetos diretamente no combobox e mudar um atributo para definir qual propriedade deste objeto que armazena o texto a ser apresentado. Essa forma de trabalho não deu certo ao utilizar da forma ensinada nos demais exercícios que tem a classe titular ao invés de uma string.
Oi Samir, tudo certo?
Como vimos lá no capitulo de composição do curso c# 1, quando guardamos um tipo dentro de outro, por exemplo, um Cliente dentro de Conta, e queremos pegar o nome do Cliente basta acessarmos:
conta.Titular.Nome // aqui acessamos a property Titulardo tipo Cliente da nossa conta e, então, pegamos a property Nome desse Cliente
No seu caso, acredito que você precise alterar seu método MostraConta() no Form1, algo como:
private void MostraConta(Conta conta)
{
textoTitular.Text = conta.Titular.Nome; // mostramos o nome do titular da conta =)
textoSaldo.Text = Convert.ToString(conta.Saldo);
textoNumero.Text = Convert.ToString(conta.Numero);
}
Qualquer dificuldade, compartilha com a gente!
André, minha dúvida é quanto:
comboContas.DisplayMember = "Nome";
Revisando o código aqui consegui mudar para e funcionou, o MostraConta estava correto já.
Eu também estava com problemas em outros trechos do código, devia ser algo relacionado.
//comboContas.DisplayMember = "Nome";
Mudei para:
comboContas.DisplayMember = "Titular.Nome";