7
respostas

Forms não atualiza os campos

Eu quando clico no botão para depositar e o de sacar, não atualiza no windows form, continua como 250.

public partial class Form1 : Form
    {
        private Conta conta;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.conta = new Conta();
            this.conta.Titular = new Cliente ("Andre");
            this.conta.Numero = 1;
            this.conta.Deposita(250.0);

            this.MostraConta();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string textoDoValorDoDeposito = textoValor.Text;
            double valorDeposito = Convert.ToDouble(textoDoValorDoDeposito);
            this.conta.Deposita(valorDeposito);


            this.MostraConta();
        }

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

        private void button2_Click(object sender, EventArgs e)
        {
            string textoDoValorDoSaque = textoValor.Text;
            double valorSaque = Convert.ToDouble(textoDoValorDoSaque);
            this.conta.Saca(valorSaque);

            this.MostraConta();
        }

        private void button2_Click_1(object sender, EventArgs e)
        {
            string textoDoValorDoSaque = textoValor.Text;
            double valorSaque = Convert.ToDouble(textoDoValorDoSaque);
            this.conta.Saca(valorSaque);

            this.MostraConta();
        }
    }
7 respostas

Olá André,

as outras informações, Número e Titular, ele mostra normalmente na tela? Além disso, poderia mandar a sua classe Conta também, por favor? Pode ser que ficou faltando atualizar o saldo nos métodos de Saca e Deposita.

 class Conta
    {
        public int Numero { get; set; }

        public double Saldo { get; private set; }

        public Cliente Titular { get; set; }

        public void Saca(double valor)
        {
            this.Saldo -= valor;
        }

        public void Deposita(double valor)
        {
            this.Saldo += valor;
        }

        public void Transfere(double valor, Conta destino)
        {
            this.Saca(valor);
            destino.Deposita(valor);
        }
    }
    class Cliente
    {
        public string Nome { get; set; }
        public int Idade { get; set; }
        private string cpf; //ainda não é propriedade
        public string Endereco { get; private set; }

        public Cliente(string nome)
        {
            this.Nome = nome;
        }

        public Cliente() { }
    }

Olá André,

a Conta está certinha. Bom preciso que você veja algumas coisas então para descobrir o que está acontecendo. Primeiro, é estranho você ter dois métodos de clique de botão para o saca. Quando você colocou os botões no formulário, deu um duplo clique em cada um dos botões para gerar o método? Porque se não ele não sabe fazer a associação entre o (Name) dos botões na tela com os dos métodos (button1_Click, button2_Click ou button2_Click_1). Além disso, você está preenchendo o campo texto do textoValor antes de chamar o Saca ou o Deposita?

Lucas eu apaguei um método de clique para o botão saca. Mesmo assim os campos não atualizam. Sim eu preencho com o valor mas parece que não altera o saldo da conta.

Olá Andre.

Poderia exibir o saldo após cada operação para ver se o saldo é modificado? (MessageBox.Show(this.conta.Saldo);)

Oi Ivo,

O saldo não modifica, continua 250. Quando dou F5 os campos aparecem vazios, ai eu escrevo "a" e eles preenchem automaticamente. Criei um novo botão para ver se alterava o saldo, mas não altera.

Olá André,

poderia colocar todo o projeto no github e me mandar o link, por favor? Pelo código parece estar ok, mas pode ser que algum dos comportamentos acabou não sendo criado corretamente quando você deu o duplo clique para gerá-los.