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

Dúvida no Ex. 3 da Aula 7 - Mão na Massa - Combo Box

Amigos, estou com problemas na comboBox. Enquanto tinha apenas uma comboBox com 2 itens, funcionou. Contudo, aumentei para 4 itens e criei a comboBox da conta de destino.

O que aconteceu foi o seguinte: na comboBox da conta de origem continuam aparecendo apenas duas pessoas (das quatro que deveriam aparecer). Essas duas pessoas é a primeira e a quarta que foram criadas - as demais não aparecem.

Já na comboBox da conta de destino não aparece nada.

Vi nas dúvidas do exercício 1 pelo menos uma pessoa com problema semelhante e não solucionado. Estou com o visual studio 2015. Segue o código:

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

public Form1() { InitializeComponent(); }

private void button1_Click(object sender, EventArgs e) { //depósito double valorDeposito = Convert.ToDouble(textoValor.Text); Conta conta = buscaContaOrigemDados(); conta.deposita(valorDeposito); mostraConta(conta); }

private void button2_Click(object sender, EventArgs e) { //saque double valorSaque = Convert.ToDouble(textoValor.Text); Conta conta = buscaContaOrigemDados(); conta.saca(valorSaque); mostraConta(conta); }

private void Form1_Load(object sender, EventArgs e) { Conta contaDoVictor = new Conta(); contaDoVictor.Titular = new Cliente("Victor"); contaDoVictor.Numero = 1;

Conta contaDoMario = new Conta(); contaDoMario.Titular = new Cliente("Mario"); contaDoMario.Numero = 2;

Conta contaDoAndre = new ContaPoupanca(); contaDoMario.Titular = new Cliente("André"); contaDoMario.Numero = 3;

Conta contaDoAndressa = new ContaCorrente(); contaDoMario.Titular = new Cliente("Andressa"); contaDoMario.Numero = 4;

this.contas = new Conta[4];

this.contas[0] = contaDoVictor; this.contas[1] = contaDoMario; this.contas[2] = contaDoAndre; this.contas[3] = contaDoAndressa;

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

foreach (Conta conta in contas) { string nome = conta.Titular.Nome; comboDestino.Items.Add(nome); } }

private void mostraConta(Conta conta) { textoNumero.Text = Convert.ToString(conta.Numero); textoSaldo.Text = Convert.ToString(conta.Saldo); textoTitular.Text = conta.Titular.Nome; }

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

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

private void Transferencia_Click(object sender, EventArgs e) { Conta contaOrigem = buscaContaOrigemDados(); Conta contaDestino = contas[comboDestino.SelectedIndex];

double valor = Convert.ToDouble(textoValor.Text);

contaOrigem.saca(valor); contaDestino.deposita(valor);

mostraConta(contaOrigem); } }

4 respostas

reenviando o código por causa da formatação:

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

public Form1() { InitializeComponent(); }

private void button1_Click(object sender, EventArgs e) { //depósito double valorDeposito = Convert.ToDouble(textoValor.Text); Conta conta = buscaContaOrigemDados(); conta.deposita(valorDeposito); mostraConta(conta); }

private void button2_Click(object sender, EventArgs e) { //saque double valorSaque = Convert.ToDouble(textoValor.Text); Conta conta = buscaContaOrigemDados(); conta.saca(valorSaque); mostraConta(conta); }

private void Form1_Load(object sender, EventArgs e) { Conta contaDoVictor = new Conta(); contaDoVictor.Titular = new Cliente("Victor"); contaDoVictor.Numero = 1;

Conta contaDoMario = new Conta(); contaDoMario.Titular = new Cliente("Mario"); contaDoMario.Numero = 2;

Conta contaDoAndre = new ContaPoupanca(); contaDoMario.Titular = new Cliente("André"); contaDoMario.Numero = 3;

Conta contaDoAndressa = new ContaCorrente(); contaDoMario.Titular = new Cliente("Andressa"); contaDoMario.Numero = 4;

this.contas = new Conta[4];

this.contas[0] = contaDoVictor; this.contas[1] = contaDoMario; this.contas[2] = contaDoAndre; this.contas[3] = contaDoAndressa;

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

foreach (Conta conta in contas) { string nome = conta.Titular.Nome; comboDestino.Items.Add(nome); } }

private void mostraConta(Conta conta) { textoNumero.Text = Convert.ToString(conta.Numero); textoSaldo.Text = Convert.ToString(conta.Saldo); textoTitular.Text = conta.Titular.Nome; }

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

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

private void Transferencia_Click(object sender, EventArgs e) { Conta contaOrigem = buscaContaOrigemDados(); Conta contaDestino = contas[comboDestino.SelectedIndex];

double valor = Convert.ToDouble(textoValor.Text);

contaOrigem.saca(valor); contaDestino.deposita(valor);

mostraConta(contaOrigem); } }

Taí, outra dúvida - como fazer o código ficar formatado aqui.

solução!

Olá Romulo,

Dê uma olhada no seu método Form1_Load. Você está inicializando a terceira e quarta conta usando a variável errada, no caso, a variavel "contadoMario".

Se mudar pra inicializar as contas certas provavelmente vai resolver.

Muito obrigado. Fiquei até chocado com este erro, mas acontece.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software