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

Erros nos comandos no ComboBox

Olá novamente.

Estou com problemas para adicionar os itens no ComboBox, uma vez que o comando comboBox.Items.Add parece não funcionar. Eis o que tentei inicialmente, conforme a aula:

namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {

        Conta[] contas;
        Cliente[] cliente;

        public Form1()
        {
            InitializeComponent();
        }



        public void Form1_Load(object sender, EventArgs e)
        {

            contas = new Conta[2];
            contas[0] = new Conta(200, 1);
            contas[1] = new Conta(100, 2);
            contas[0].numero = 1;
            contas[1].numero = 2;
            cliente = new Cliente[2];
            cliente[0] = new Cliente("Leandro", 25);
            cliente[1] = new Cliente("Leonardo", 18);
            contas[0].cliente = cliente[0];
            contas[1].cliente = cliente[1];

            foreach (Conta conta in contas)
            {
                comboBox1.Items.Add(conta.cliente.nome);
            }             
        }

O código compila sem erros, mas o ComboBox permanece vazio. Pesquisando na internet, encontrei uma alternativa, que seria criar um método para adicionar os itens no ComboBox, e então o código ficou assim:

namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {

        Conta[] contas;
        Cliente[] cliente;


        public Form1()
        {
            InitializeComponent();
            this.comboBoxPopulate();
        }



        public void Form1_Load(object sender, EventArgs e)
        {

            contas = new Conta[2];
            contas[0] = new Conta(200, 1);
            contas[1] = new Conta(100, 2);
            contas[0].numero = 1;
            contas[1].numero = 2;
            cliente = new Cliente[2];
            cliente[0] = new Cliente("Leandro", 25);
            cliente[1] = new Cliente("Leonardo", 18);
            contas[0].cliente = cliente[0];
            contas[1].cliente = cliente[1];                      
        }

        private void comboBoxPopulate()
        {
            foreach (Conta conta in contas)
            {
                this.comboBox1.Items.Add(conta.cliente.nome);
            }
        }

Porém este retorna uma exceção, apontando para o "in" no foreach. O que estou fazendo de errado?

No primeiro método, conforme ensinado na aula do Victor, não consigo adicionar nenhum item ao combobox, seja ele variável ou string pré definida.

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
9 respostas

Tentei também alterar o foreach para um for simples mas continuo recebendo exceção, desta vez apontando para o i < contas.Lenght.

private void comboBoxPopulate()
        {
            for (int i = 0; i < contas.Length; i++ )
            {
                this.comboBox1.Items.Add(contas[i].numero);
            }
        }

Você já tentou executar o método durante o carregamento exemplo: Apos criar os clientes e contas e preencher na ultima linha do form_load coloca o seu metodo, this.comboBoxPopulate(); ou o coloca no envento onclick do seu combobox.

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { comboBoxPopulate(); }

Tentei, ele compila sem erros, mas o combobox continua vazio

Alguma ajuda ae por favor, não consigo resolver esse problema!

Oi Leandro,

Você poderia ,por favor, postar o código das suas classes Conta e Cliente?

Classe Conta

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsFormsApplication6
{
    public class Conta
    {
        public int numero { get; set; }
        public double saldo { get; set; }
        public Cliente titular { get; set; }
        public Conta (double Saldo , int Numero){
            this.saldo = Saldo;
            this.numero = Numero;
        }


        public bool Deposita(double valor)
        {
            this.saldo += valor;
            return true;
        }

        public virtual bool Saca(double valor)
        {
           if (valor > this.saldo || valor < 0)
           {
               return false;
           }
           else
           {
               if (this.titular.maiorDeIdade())
               {
                   this.saldo -=valor;
                   return true;
               }
               else
               {
                   if (valor <= 200)
                   {
                       this.saldo-=valor;
                       return true;
                   } else {
                    return false;
                   }
               }
           }
        }

        public void Transfere(double valor, Conta destino)
        {
            this.Saca(valor);
            destino.Deposita(valor);
        }
    }
}

Classe Cliente

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsFormsApplication6
{
    public class Cliente
    {
        public string nome { get; set; }
        public int idade;
        public Cliente(string Nome, int Idade)
        {
            this.nome = Nome;
            this.idade = Idade;
        }

        public bool maiorDeIdade()
        {
            return idade >= 18;
        }

    }
}

Leandro, me mande um e-mail pelo gabriel.ferreira@caelum.com.br se ainda estiver com problemas que te ajudo por lá (:

solução!

Leandro se não sou bom em form, conheço mais web, por isso vou dar uma sugestão: Mova todo o conteúdo do primeiro print (explicado na aula), para o método:

public Form1() { InitializeComponent(); }

e deixei o evento: public void Form1_Load(object sender, EventArgs e) {}

Deixando ele vazio, tenta ai.

Aí sim Claudio! Tinha resolvido de outra maneira, mas acabei esbarrando em outro problema, que era a duplicação dos itens do combobox quando selecionava algum deles. Agora, com a sua sugestão, resolvi tanto o problema do combobox vazio quanto da duplicação de itens.

SALVOU!