4
respostas

ComboBox não lista nada

Fiz este código que aparenta esta como no exemplo mas meu comboBox não lista nada.

namespace CaixaEletronico
            {
                public partial class Form1 : Form
                {
                    ///private Conta conta;
                    ///private contaPoupanca cp    ;
                    Conta[] contas;

                    public Form1()
                    {
                        InitializeComponent();
                    }


        private void textoTitular_TextChanged(object sender, EventArgs e)
        {
            ///-----Conta Normal---------------------------
            ///this.conta = new Conta();
            ///this.conta.titular = new Cliente("Elvis");
            ///this.conta.numero = 1;
            ///this.conta.titular.idade = 20;
            ///this.conta.Deposita(250.0);

            ///this.MostrarConta();

            ///-----Conta Poupança---------------------------

            ///this.cp = new contaPoupanca();
            /// this.cp.titular = new Cliente("Thays");
            ///this.cp.numero = 2;
            ///this.cp.titular.idade = 24;
            ///this.cp.Deposita(1000.0);

            ///this.MostrarConta();
            ///

            Conta c1 = new Conta();
            c1.titular = new Cliente ("Victor");
            c1.numero = 1;

            Conta c2 = new Conta();
            c2.titular = new Cliente("Mario");
            c2.numero = 2;

            this.contas = new Conta[2];
            this.contas[0] = c1;
            this.contas[1] = c2;

            foreach (Conta c in contas)
            {
                comboConta.Items.Add(c.titular);
            }

        }

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

            textoTitular.Text = contaSelecionada.titular.Nome;
            textoSaldo.Text = Convert.ToString(contaSelecionada.Saldo);
            textoNumero.Text = Convert.ToString(contaSelecionada.numero);

        }
4 respostas

Olá Elvis,

Para que as contas apareçam no momento que abrir a tela, elas devem ser criadas e adicionadas ao combobox no método Form1_Load. Note que esse código acabou ficando no método textoTitular_TextChange ao invés de ficar no Form1_Load.

Acho que não entendi sua solução pois realizei algumas modificações e não tive solução.

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;

namespace CaixaEletronico
{
    public partial class Form1 : Form
    {
        ///private Conta conta;
        ///private contaPoupanca cp    ;
        Conta[] contas;

        public Form1()
        {
            InitializeComponent();
        }


        private void textoTitular_TextChanged(object sender, EventArgs e)
        {
            ///-----Conta Normal---------------------------
            ///this.conta = new Conta();
            ///this.conta.titular = new Cliente("Elvis");
            ///this.conta.numero = 1;
            ///this.conta.titular.idade = 20;
            ///this.conta.Deposita(250.0);

            ///this.MostrarConta();

            ///-----Conta Poupança---------------------------

            ///this.cp = new contaPoupanca();
            /// this.cp.titular = new Cliente("Thays");
            ///this.cp.numero = 2;
            ///this.cp.titular.idade = 24;
            ///this.cp.Deposita(1000.0);

            ///this.MostrarConta();
            ///

            Conta c1 = new Conta();
            c1.titular = new Cliente("Victor");
            c1.numero = 1;

            Conta c2 = new Conta();
            c2.titular = new Cliente("Mario");
            c2.numero = 2;

            this.contas = new Conta[2];
            this.contas[0] = c1;
            this.contas[1] = c2;

            foreach (Conta c in contas)
            {
                comboConta.Items.Add(c.titular);
            }

        }

        private void button1_Click(object sender, EventArgs e)
        {
            ///  string textoValorDeposto = textoValor.Text;
            /// double valorDeposto = Convert.ToDouble(textoValorDeposto);

            ///  this.conta.Deposita(valorDeposto);

            /// this.cp.Deposita(valorDeposto);
            ///this.MostrarConta();

        }
        ///----Tem que ser visto como linkar a conta especifica que se quer ver? 
        ///  private void MostrarConta()
        /// {
        ///  textoTitular.Text = cp.titular.Nome;
        /// textoSaldo.Text = Convert.ToString(cp.Saldo);
        /// textoNumero.Text = Convert.ToString(cp.numero);
        /// }

        private void button2_Click(object sender, EventArgs e)
        {
            ///   string textoValorSaque = textoValor.Text;
            ///  double valorSaque = Convert.ToDouble(textoValorSaque);

            ///  this.cp.Saca(valorSaque);

            ///  this.MostrarConta();



        }

        private void Saldo_Click(object sender, EventArgs e)
        {
        /*    this.conta = new Conta();
            this.cp = new contaPoupanca();
            this.conta.Deposita(200);
            this.cp.Deposita(1500);


            TotalizadorDeContas t = new TotalizadorDeContas();
            t.adciona(this.cp);
            t.adciona(this.conta);


            MessageBox.Show("Valor total é: " + t.saldoToal);

            Conta c = new contaPoupanca();
            */
        }

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

            textoTitular.Text = contaSelecionada.titular.Nome;
            textoSaldo.Text = Convert.ToString(contaSelecionada.Saldo);
            textoNumero.Text = Convert.ToString(contaSelecionada.numero);

        }
    }
}

Olá Elvis,

todo o seu código que cria as contas e carrega no ComboBox ficou no método textoTitular_TextChanged:

private void textoTitular_TextChanged(object sender, EventArgs e)
{
            Conta c1 = new Conta();
            c1.titular = new Cliente("Victor");
            c1.numero = 1;

            Conta c2 = new Conta();
            c2.titular = new Cliente("Mario");
            c2.numero = 2;

            this.contas = new Conta[2];
            this.contas[0] = c1;
            this.contas[1] = c2;

            foreach (Conta c in contas)
            {
                comboConta.Items.Add(c.titular);
            }

}

Ou seja, ele só vai colocar as contas no ComboBox quando o usuário editar o campo texto do titular. No caso você precisa fazer esse código no método Form1_Load, que é executado no momento que a tela será carregada para a tela do usuário. Para criar este método basta dar um duplo clique no formulário e não em um campo texto ou botão . Nesta aula mostra como fazer isso.

Você está iniciando as contas no método do combobox ao alterar o conteúdo, ao invés do método do formulário que é executado ao inicializar o formulário.

De um duplo clique no formulário que ele irá criar o: private void Form1_Load(object sender, EventArgs e)

E migre a função de inicializar as contas a serem listadas para lá