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

Diferentes erros

Olá pessoal, agradeco toda ajuda que vier :)

Tenho tido vários erros neste codigo.

Tentei como este exemplo abaixo do moderador Paulo Silveira de outro topico:

contas[0].Titular = new Cliente(); contas[0].Titular.Nome = "Raphael";

e parei de obter erros, porem no desencandeamento do programa, só aparece:

"CaixaEletronico.Cliente"

em todos os campos que provem da classe Cliente, como por exemplo no comboContas, txtTitular e no txtSaldo e só no txtNumero é que aparece correcto.

Pode ajudar me por favor?

Desde já, muitissimo obrigado :)

Meu codigo:

    public partial class Titular : Form
    {
        Conta[] contas;

        public Titular()
        {
            InitializeComponent();
        }

        private void Titular_Load(object sender, EventArgs e)
        {
            contas = new Conta[2];

            contas[0] = new Conta();
            contas[0].Numero = 1;
            contas[0].Titular = new Cliente();
            contas[0].Titular.Nome = "Vitor";

            contas[1] = new Conta();
            contas[1].Numero = 2;//havia erros antes de criar a nova instancia do cliente
            contas[1].Titular = new Cliente();
            contas[1].Titular.Nome = "Mario";

            foreach (Conta c in contas)
            { 
                comboContas.Items.Add(c.Titular);//houve erros aqui no inicio
            }

        }

        private void comboContas_SelectedIndexChanged(object sender, EventArgs e)
        {
            int indiceSelecionado = comboContas.SelectedIndex;
            Conta contaSelecionada = contas[indiceSelecionado];
           txtTitular.Text = Convert.ToString(contaSelecionada.Titular);
            txtNumero.Text = Convert.ToString(contaSelecionada.Numero);
            txtSaldo.Text = txtTitular.Text + contaSelecionada.Saldo;
        }
    }

Cód das aulas:

private void Form1_Load(object sender, EventArgs e)
{
    contas = new Conta[3];

    Conta contaDoVictor = new Conta();
    contaDoVictor.Titular = "Victor";
    contaDoVictor.Numero = 1;
    contas[0] = contaDoVictor;

    Conta contaDoGuilherme = new Conta();
    contaDoGuilherme.Titular = "Guilherme";
    contaDoGuilherme.Numero = 2;
    contas[1] = contaDoGuilherme;

    Conta contaDoMauricio = new Conta();
    contaDoMauricio.Titular = "Mauricio";
    contaDoMauricio.Numero = 3;
    contas[2] = contaDoMauricio;

    foreach (Conta c in contas)
    {
        comboContas.Items.Add(c.Titular);
    }
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    int indiceSelecionado = comboContas.SelectedIndex;
    Conta contaSelecionada = this.contas[indiceSelecionado];

    this.MostraConta(contaSelecionada);
}
2 respostas
solução!

Quando você faz:

 txtTitular.Text = Convert.ToString(contaSelecionada.Titular);

Você está "transformando" o objeto titular em uma string.

Creio que o que você quer fazer é pegar o nome do titular, e não o objeto em si:

 txtTitular.Text = contaSelecionada.Titular.Nome;

Repare a diferença sutil, mas importante.

Oi Paulo,

Muitissimoooo obrigado :)

Já tinha tentado fazer esta retificacao e dava sempre erro porque eu estava trocando no foreach, mas nao na selecao do comboBox, agora troquei em todos e funciona :)

foreach (Conta c in contas)
 {     
    comboContas.Items.Add(c.Titular.Nome);
    //aqui crescentei o nome ao Titular
}

txtTitular.Text = Convert.ToString(contaSelecionada.Titular.Nome);
//aqui crescentei o nome ao Titular tambem

    txtSaldo.Text = Convert.ToString(contaSelecionada.Saldo);
/*aqui fiz o Convert.ToString porquem estava somente
    txtTitular.Text + contaSelecionada.Saldo*/ 

Muitissimo obrigado