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

Remover Items de um Array

eu estava tentando implementar remover contas da aula 4

public void RemoveConta(Conta c)
        {
            comboContas.Items.Remove(c);
            comboTransfere.Items.Add(c);
            int i;
            for (i = 0; i < this.QuantidadeDeContas; i++)
            {
                if (this.contas[i] == c)
                {
                    break;
                }
            }
            while (i + 1 < this.QuantidadeDeContas)
            {
                this.contas[i] = this.contas[i + 1];
                i++;
            }
        }
private void RemoverConta_Click(object sender, EventArgs e)
        {
            int IndiceSelecionado = comboContas.SelectedIndex;
            Conta ContaSelecionada = contas[IndiceSelecionado];

            RemoveConta(ContaSelecionada);
        }

mas simplesmente não acontece nada, já tentei ver como o instrutor fez pelos "arquivos da aula", está praticamente do mesmo jeito, só que não funciona como deveria.

Tentei usar um método mais direto que tambem não funcionou

private void RemoverConta_Click(object sender, EventArgs e)
        {
            int IndiceSelecionado = comboContas.SelectedIndex;
            Conta ContaSelecionada = contas[IndiceSelecionado];

            comboContas.Items.Remove(ContaSelecionada);
            comboTransfere.Items.Remove(ContaSelecionada);
        }

Se alguém puder ajudar.Desde já agradeço.

using Empresa.CaixaEletronico10.Clientes;
using Empresa.CaixaEletronico10.Contas;

namespace Empresa.CaixaEletronico10
{
    public partial class Form1 : Form
    {
        private int QuantidadeDeContas=3;
        private Conta[] contas = new Conta[20];
        TotalizadorDeContas SaldoTotal = new TotalizadorDeContas();

        public Form1()
        {
            InitializeComponent();
        }


        public void TotalSaldo()
        {
            foreach(Conta conta in contas)
            {
                SaldoTotal.Adiciona(conta);
            }
            textSaldoTotal.Text = Convert.ToString(SaldoTotal.SaldoTotal);
            foreach (Conta conta in contas)
            {
                SaldoTotal.Retira(conta);
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            ContaCorrente c1 = new ContaCorrente();
            c1.Titular = new Cliente();
            c1.Titular.Nome = "Alexander";
            c1.Titular.CPF = "123456789 - 00";
            c1.Titular.Emancipado = true;
            c1.Titular.Idade = 18;
            c1.Numero = 1;
            contas[0] = c1;

            ContaPoupanca c2 = new ContaPoupanca();
            c2.Titular = new Cliente();
            c2.Titular.Nome = "Bassani";
            c2.Titular.CPF = "987654321 - 00";
            c2.Titular.Emancipado = true;
            c2.Titular.Idade = 18;
            c2.Numero = 3;
            contas[1] = c2;

            ContaInvestimento c3 = new ContaInvestimento();
            c3.Titular = new Cliente();
            c3.Titular.Nome = "Amaral";
            c3.Titular.CPF = "147896325 - 00";
            c3.Titular.Emancipado = true;
            c3.Titular.Idade = 18;
            c3.Numero = 3;
            contas[2] = c3;

            foreach(Conta conta in contas)
            {
                if (conta != null)
                {
                    comboContas.Items.Add(conta.Titular.Nome);
                    comboTransfere.Items.Add(conta.Titular.Nome);
                }
            }

            this.TotalSaldo();
        }

        private void comboContas_SelectedIndexChanged(object sender, EventArgs e)
        {
            int IndiceSelecionada = comboContas.SelectedIndex;
            Conta ContaSelecionada = contas[IndiceSelecionada];

            textNome.Text = ContaSelecionada.Titular.Nome;
            textNumero.Text = Convert.ToString(ContaSelecionada.Numero);
            textCPF.Text = Convert.ToString(ContaSelecionada.Titular.CPF);
            textSaldo.Text = Convert.ToString(ContaSelecionada.Saldo);
            textRendimento.Text = Convert.ToString(ContaSelecionada.RendimentoAnual());
        }

        private void Sacar_Click(object sender, EventArgs e)
        {
            int IndiceSelecionada = comboContas.SelectedIndex;
            Conta ContaSelecionada = contas[IndiceSelecionada];

            string numero = textValor.Text;
            double valor = Convert.ToDouble(numero);

            try
            {
                ContaSelecionada.Sacar(valor);
                MessageBox.Show("Dinheiro Liberado");

                textSaldo.Text = Convert.ToString(ContaSelecionada.Saldo);
                textRendimento.Text = Convert.ToString(ContaSelecionada.RendimentoAnual());

                this.TotalSaldo();
            }
            catch(SaldoInsuficienteException)
            {
                MessageBox.Show("Saldo insuficiente");
            }
            catch (ArgumentException)
            {
                MessageBox.Show("Não é possível sacar um valor negativo");
            }

            this.TotalSaldo();
        }

        private void Depositar_Click(object sender, EventArgs e)
        {
            int IndiceSelecionada = comboContas.SelectedIndex;
            Conta ContaSelecionada = contas[IndiceSelecionada];

            string numero = textValor.Text;
            double valor = Convert.ToDouble(numero);

            try
            {
                ContaSelecionada.Deposita(valor);
                MessageBox.Show("Dinheiro Depositado");

                textSaldo.Text = Convert.ToString(ContaSelecionada.Saldo);
                textRendimento.Text = Convert.ToString(ContaSelecionada.RendimentoAnual());

                this.TotalSaldo();
            }
            catch (ArgumentException)
            {
                MessageBox.Show("Não é possível sacar um valor negativo");
            }
        }

        private void Transferir_Click(object sender, EventArgs e)
        {
            int IndiceSelecionado = comboContas.SelectedIndex;
            Conta ContaSelecionada = contas[IndiceSelecionado];
            int IndiceSelecionado2 = comboTransfere.SelectedIndex;
            Conta ContaSelecionada2 = contas[IndiceSelecionado2];

            string numero = textValor.Text;
            double valor = Convert.ToDouble(numero);

            try
            {
                if (ContaSelecionada == ContaSelecionada2)
                {
                    throw new ContaIgualExcepiton();
                }

                ContaSelecionada.Transfere(valor, ContaSelecionada2);
                MessageBox.Show("Dinheiro Transferido de "+ContaSelecionada.Titular.Nome + " para "+ContaSelecionada2.Titular.Nome);

                textSaldo.Text = Convert.ToString(ContaSelecionada.Saldo);
                textRendimento.Text = Convert.ToString(ContaSelecionada.RendimentoAnual());

                this.TotalSaldo();

            }
            catch (SaldoInsuficienteException)
            {
                MessageBox.Show("Saldo insuficiente para transferencia");
            }
            catch (ArgumentException)
            {
                MessageBox.Show("Não é possível transferir um valor negativo");
            }
            catch (ContaIgualExcepiton)
            {
                MessageBox.Show("Selecione outro destinatario para a transferencia");
            }
            /*
            catch (valorNuloException)
            {
                MessageBox.Show("Digite um valor");
            }
            */
        }

        private void TributosTotal_Click(object sender, EventArgs e)
        {
            TotalizadorDeTributos Tributos = new TotalizadorDeTributos();
            ContaInvestimento ci = new ContaInvestimento();
            ContaPoupanca cp = new ContaPoupanca();
            ci.Titular = new Cliente();
            cp.Titular = new Cliente();
            cp.Titular.Emancipado = true;
            ci.Titular.Emancipado = true;
            cp.Titular.CPF = "0000";
            ci.Titular.CPF = "0000";
            ci.Deposita(1500.0);
            cp.Deposita(1000.0);

            Tributos.Acumula(ci);
            Tributos.Acumula(cp);

            MessageBox.Show("Tributos: " + Tributos.Total);

            Tributos.Retira(ci);
            Tributos.Retira(cp);
        }

        private void ContasCorrente_Click(object sender, EventArgs e)
        {
            ContaCorrente conta = new ContaCorrente();
            MessageBox.Show("Proxima Contas:" + conta.ProximaConta());
            MessageBox.Show("Numero Contas:" + conta.NumeroDeConta());
            conta.ProximaConta();
        }

        private void ContasIguais_Click(object sender, EventArgs e)
        {
            Cliente cliente01 = new Cliente("Alex");
            cliente01.RG = "1234-0";
            Cliente cliente02 = new Cliente("Bass");
            cliente02.RG = "1234-0";

            MessageBox.Show("RG Igual? " + cliente01.Equals(cliente02));

            MessageBox.Show(cliente01.ToString());
            MessageBox.Show(cliente02.ToString());
        }
        //---------------------------------------------------------------------------------------------------

        public void AdicionaConta(Conta c)
        {
            if (this.QuantidadeDeContas == this.contas.Length)
            {
                Conta[] novo = new Conta[this.contas.Length * 2];
                for (int i = 0; i < this.QuantidadeDeContas; i++)
                {
                    novo[i] = this.contas[i];
                }
                this.contas = novo;
            }
            this.contas[this.QuantidadeDeContas] = c;
            this.QuantidadeDeContas++;
            comboContas.Items.Add(c.Titular.Nome);
        }

        public void RemoveConta(Conta c)
        {
            comboContas.Items.Remove(c);
            comboTransfere.Items.Add(c);
            int i;
            for (i = 0; i < this.QuantidadeDeContas; i++)
            {
                if (this.contas[i] == c)
                {
                    break;
                }
            }
            while (i + 1 < this.QuantidadeDeContas)
            {
                this.contas[i] = this.contas[i + 1];
                i++;
            }
        }

        private void AdicionarCONTAS_Click(object sender, EventArgs e)
        {
            CadastroDeContas Cadastro = new CadastroDeContas(this);
            Cadastro.ShowDialog();
        }

        private void RemoverConta_Click(object sender, EventArgs e)
        {
            int IndiceSelecionado = comboContas.SelectedIndex;
            Conta ContaSelecionada = contas[IndiceSelecionado];

            RemoveConta(ContaSelecionada);
        }
    }
}
using Empresa.CaixaEletronico10.Clientes;
using Empresa.CaixaEletronico10.Contas;

namespace Empresa.CaixaEletronico10
{
    public partial class CadastroDeContas : Form
    {
        private Form1 AplicaçãoPrincipal;
        public CadastroDeContas(Form1 AplicaçãoPrincipal)
        {
            this.AplicaçãoPrincipal=AplicaçãoPrincipal;
            InitializeComponent();
        }

        private void CadastroDeContas_Load(object sender, EventArgs e)
        {
            this.comboTipoDeConta.Items.Add("Conta Corrente");
            this.comboTipoDeConta.Items.Add("Conta Poupança");
            this.comboTipoDeConta.Items.Add("Conta Investimento");
        }

        private void comboTipoDeConta_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            string titular = textTitularDaConta.Text;
            int numero = Convert.ToInt32(textNumeroDaConta.Text);
            string cPF = textCPFDoTitular.Text;
            int idade = Convert.ToInt32(textIdadeDoTitular.Text);

            Conta c;
            if (comboTipoDeConta.Text.Equals("Conta Poupança"))
            {
                c = new ContaPoupanca();
            }
            else if (comboTipoDeConta.Text.Equals("Conta Corrente"))
            {
                c = new ContaCorrente();
            }
            else
            {
                c = new ContaInvestimento();
            }

            c.Numero = Convert.ToInt32(textNumeroDaConta.Text);
            c.Titular = new Cliente();
            c.Titular.Nome = textTitularDaConta.Text;
            c.Titular.CPF = textCPFDoTitular.Text;
            c.Titular.Idade = Convert.ToInt32(textIdadeDoTitular.Text);
            this.AplicaçãoPrincipal.AdicionaConta(c);
        }
    }
}
3 respostas
solução!

Já consegui Resolver :)

Como você resolveu? Estou com o mesmo problema!

o meu erro era que eu tinha colocado

comboTransfere.Items.Add(c);

ao invés de

comboTransfere.Items.Remove(c);

no

public void RemoveConta(Conta c)
        {
            comboContas.Items.Remove(c);
            comboTransfere.Items.Add(c);
            int i;
            for (i = 0; i < this.QuantidadeDeContas; i++)
            {
                if (this.contas[i] == c)
                {
                    break;
                }
            }
            while (i + 1 < this.QuantidadeDeContas)
            {
                this.contas[i] = this.contas[i + 1];
                i++;
            }
        }

não sei se seu erro é o mesmo