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

ComboBox mostrando o endereço do titular

Depois de inserir os códigos para o formulário, o comboBox passou a implementar a conta que passei mas apesar de mostrar tudo certinho, aparece o endereço do titular ao invés do nome. segue o código:

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;
using Alura.CaixaDesu.Contas;
using Alura.CaixaDesu.Usuario;

namespace Alura.CaixaDesu
{
    public partial class Form1 : Form
    {
        Conta[] contas;
        private int quantidadeDeContas;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            contas = new Conta[10];
            contas[0] = new ContaCorrente();
            contas[0].Titular = new Cliente("Adelar");
            contas[0].Deposita(250.0);
            contas[0].Numero = 1;

            contas[1] = new ContaCorrente();
            contas[1].Titular = new Cliente("Layla");
            contas[1].Deposita(10);
            contas[1].Numero = 2;
            this.quantidadeDeContas = 2;

            foreach (Conta conta in this.contas)
            {
                if(conta != null)
                {
                    comboContas.Items.Add(conta.Titular.Nome);
                    destinoDaTransferencia.Items.Add(conta.Titular.Nome);
                }
            }
        }    

        private void MostraConta(Conta conta)
        {
            textoTitular.Text = conta.Titular.Nome;
            textoSaldo.Text = Convert.ToString(conta.Saldo);
            textoNumero.Text = Convert.ToString(conta.Numero);
        }

        private Conta BuscaContaSelecionada()
        {
            int indiceSelecionado = comboContas.SelectedIndex;
            return this.contas[indiceSelecionado];
        }

        private void comboContas_SelectedIndexChanged(object sender, EventArgs e)
        {
            string titularSelecionado = comboContas.Text;
            Conta contaSelecionada = BuscaContaSelecionada();
            MostraConta(contaSelecionada);
        }

        public void AdicionaConta(Conta conta)
        {
            this.contas[this.quantidadeDeContas] = conta;
            this.quantidadeDeContas++;

            comboContas.Items.Add(conta);
        }

        private void button4_Click(object sender, EventArgs e)
        {
            CadastroDeContas cadastro = new CadastroDeContas(this);
            cadastro.ShowDialog();
        }

    //restante dos outros métodos.
    }
}

Implementei e conferi as outras classes.. mesmo assim continua mostrando o nome completo do namespace de ContaCorrente.

2 respostas
solução!

Oi Layla, tudo bom?

Estranho... verifica pra mim se sua class conta está reescrevendo o método ToString, algo como:

public abstract class Conta
    {
//resto da classe
    public override string ToString()
        {
            return "Numero: " + this.Numero;
        }
    }
}

Verifica, também, se sua conta corrente está herdando de conta. Algo como:

class ContaCorrente : Conta

Obrigado. De vdd. Na moralzinha. kkk passei umas boas horas nisso.. A implementação do ToString tava na class Cliente ♦