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

Dúvida sobre a lógica do Combo Box

comboContas.Items.Add(conta.titular.Nome); Nesse caso, o que esse método faz? O que cada opção dele armazena?

comboContas.SelectedIndex; Acho que se responder a de cima vai responder essa mas, como exatamente ele pega o índice do array de contas?

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
    {
        Banco banco = new Banco();
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void textTitular_TextChanged(object sender, EventArgs e)
        {

        }

        private void textNumero_TextChanged(object sender, EventArgs e)
        {

        }

        private void textSaldo_TextChanged(object sender, EventArgs e)
        {

        }

        private void Depositar_Click(object sender, EventArgs e)
        {
             string TextoDoValorDoDeposito = textValor.Text;
             double valor = Convert.ToDouble(TextoDoValorDoDeposito);
             Conta contaSelecionada = ContaSelecionada();
             contaSelecionada.Depositar(valor);
        }

        private void textValor_TextChanged(object sender, EventArgs e)
        {

        }

        private void Sacar_Click(object sender, EventArgs e)
        {
            string textoDoValorDoSaque = textValor.Text;
            double valor = Convert.ToDouble(textoDoValorDoSaque);
            int indiceSelecionado = comboContas.SelectedIndex;
            Conta contaSelecionada = ContaSelecionada();
            contaSelecionada.Sacar(valor);
        }

        private void textTitularCadastrar_TextChanged(object sender, EventArgs e)
        {

        }

        private void textNumeroCadastrar_TextChanged(object sender, EventArgs e)
        {

        }

        private void CadastrarConta_Click(object sender, EventArgs e)
        {            
            Conta conta = new Conta();
            Cliente cliente = new Cliente(textTitularCadastrar.Text);
            conta.titular = cliente;
            conta.Numero = Convert.ToInt32(textNumeroCadastrar.Text);
            banco.AdicionaConta(conta);
            comboContas.Items.Add(conta.titular.Nome);

        }

        private void comboContas_SelectedIndexChanged(object sender, EventArgs e)
        {
            Conta contaSelecionada = ContaSelecionada();
            MostrarConta(contaSelecionada);
        }

        void MostrarConta(Conta conta)
        {
            textTitular.Text = conta.titular.Nome;
            textNumero.Text = Convert.ToString(conta.Numero);
            textSaldo.Text = Convert.ToString(conta.Saldo);
        }

        Conta ContaSelecionada()
        {
            int indiceSelecionado = comboContas.SelectedIndex;
            Conta contaSelecionada = banco.contas[indiceSelecionado];
            return contaSelecionada;
        }

        private void BotaoDeTeste_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Conta de indice 0. Saldo:" + banco.contas[0].Saldo);
        }
    }
3 respostas

Oi Maxranderson, tudo bem?

Em relação a primeira pergunta:

comboContas.Items.Add(conta.titular.Nome)

O método add simplesmente adiciona um objeto no combobox. Provavelmente você adicionar qualquer objeto e ele deve invocar o ToString para exibir o valor do objeto na listagem.

A invocação comboContas.SelectedIndex retorna justamente o indice que foi selecionado. Perceba que no método ContaSelecionada esse índice é usado para acessar a posição do array e recuperar a conta correta.

Vamos ver se eu entendi, o primeiro vai armazenar a referência do objeto, por exemplo, contas[0]. O segundo, como foi explicado, vai retornar o índice da opção selecionada. É isso?

solução!

Opa, pelo código, na verdade ele armazenou simplesmente o nome do dono da conta. Só que o indice do combo que tem esse nome é o mesmo indice do array do banco que contém o objeto conta de mesmo dono.