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

Dúvida no Ex. 1 da Aula 7 - Mão na Massa - Combo Box - Código não funciona no VS 2013

Por algum motivo não é carregado os itens no combobox. Refiz o projeto algumas vezes, para testar e não encontro o erro


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);    
    }
}
6 respostas

Troque a seguinte linha:

comboContas.Items.Add(c.Titular);

Por:

comboContas.Items.Add(c.Titular.Nome);

E veja se funciona.

Funciona não, já tentei de várias maneiras. O visual não apresenta erro nenhum e uma coisa que notei é que as classes não está recebendo os atributos, ao debugar as mesmas se encontram como null

Utilizo o VS2010 e funcionou tudo corretamente.

Já verificou se criou um projeto "Windows Forms" ? Apesar de dizer que o VS não retorna nenhum erro, tente colocar tudo em um "Try Catch" e veja se tem alguma mensagem de retorno

Try 
{     
    //meu codigo
} Catch (Exception ex) 
{
    MessageBox.Show(ex.message);
}

No mais seu código parece estar correto.

Como está o código do construtor Form1()?

Este só funcionou pra mim quando mudei o Public Cliente Titular na classe Conta para Public String Titular.

tentei outras alternativas como: c.titular = new Cliente(); c.titular.nome = "Manoel";

e deixei o combo da seguinte forma: comboContas.Items.Add(c.Titular.Nome);

Mas ele diz justamente que o c.Titular.Nome não pode ser nulo...

solução!

Você não deve ter instanciado a classe cliente dentro da classe conta.

tente instanciar no construtor da classe conta

class Conta { public int Numero { get; set; } public double Saldo { get; protected set; }

public Cliente Titular { get; set; }

public Conta() { this.Titular = new Cliente(); }

public Conta(string nome, double saldo, int numero, int idade) { this.Titular = new Cliente();

this.Titular.nome = nome; this.Titular.idade = idade; this.Saldo = saldo; this.Numero = numero; }

public virtual bool Saca(double valor) {

if (valor <= Saldo) { if (Titular.EhMaiorDeIdade()) { this.Saldo -= valor; return true; } else if (valor <= 200) { this.Saldo -= valor; return true; } else { return false; } } else { return false; } }

public void Deposita(double valor) { this.Saldo += valor; }

public string Transfere(double valor, Conta destino) { if (this.Saca(valor)) { destino.Deposita(valor); return "Tranferencia Efetuada com sucesso."; } else { return "Não foi possível tranferir."; } } }