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

DisplayMember não mostra o nome

Olá! Seguindo a explicação, eu passei o objeto para a ComboBox e usei o DisplayMember = "cliente.nome", porém ele mostra a o nome da classe ao invés do nome do cliente! (seguindo as aulas, o nome do cliente fica na classe cliente que está dentro da conta).

Código:

            foreach (Conta con in conta)
            {
                cmbContas.Items.Add(con);
                cmbDestinoTransferencia.Items.Add(con);
            }
            cmbContas.DisplayMember = "cliente.nome";

Usei até: cmbContas.DisplayMember = Hudson.CaixaEletronico.Contas.Conta.cliente.nome"; Porém não funcionou também

(Se eu fizer usando o ToString(); ele funciona)

6 respostas

Acho que só usando "Nome" funciona nao?

Também não

solução!
 public Form1()
        {
            InitializeComponent();
            var conta = new List<Conta>();

            for (int i = 0; i < 10; i++)
            {
                conta.Add(new Conta() { Cliente = new Cliente() { Nome="Joao"+i} });
            }

            cmbContas.DataSource = conta;
            cmbContas.DisplayMember = "NomeCliente";          

        }

        class Conta {
            public Cliente Cliente { get; set; }

            public string NomeCliente { get { return Cliente.Nome; } }
        }
        class Cliente {
            public string Nome { get; set; }
        }

Aee! Fiz a alteração para usar o NomeCliente e funcionou! Por que será que ele não conseguia pegar direto do atributo Cliente?

Acho que é uma restrição da linguagem ou do componente =/

Aaah, entendi. Valeu \o/