Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Definir Titular.Nome como valor a ser exibido no combobox

Como definir um atributo de uma subclasse para ser exibido no lugar do nome do objeto no combobox?

4 respostas

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!

solução!

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";