C#Windows窗体 - 从局部变量中分配textBox值(数值)

时间:2014-01-07 13:55:50

标签: c# .net winforms textbox

对于插入textBox2中的金额,此方法正在减小textBox1的值。如果textBox1中没有足够的“钱”,则应从textBox3中获取超额金额。最后,方法应该将文本框更新为新值,但只清除textBox2,textBox1和textBox3保持不变。任何人都可以告诉我为什么textBox1.text = Account.toString()没有将文本框值分配给变量Account的值而textBox3.text = Savings.toString()没有将文本框值分配给变量Savings的值?

public void Debit(decimal amount)
    {
        decimal Account = Convert.ToDecimal(textBox1.Text);
        decimal Savings = Convert.ToDecimal(textBox3.Text);

        if ((Account + Savings) < amount)
            if (Overdrawn != null)
                Owerdrawn(this, new OverdrawnEventArgs (Account, amount));
        else if (Account >= amount)
            Account -= amount;
        else {
            amount -= Account;
            Account = 0m;
            Savings -= amount;
        }
        textBox1.Text = Account.ToString();
        textBox2.Clear();
        textBox3.Text = Savings.ToString();
    }

1 个答案:

答案 0 :(得分:5)

你看到这些结果的唯一方法就是如果你遇到透支的情况。如果是Account + Savings < amount - 在这种情况下,您永远不会更改AccountSavings的值。

在其他所有情况下,您实际上都在更改这两个值,因此文本框值会发生变化。我很确定你想要的代码是:

public void Debit(decimal amount)
{
    decimal Account = Convert.ToDecimal(textBox1.Text);
    decimal Savings = Convert.ToDecimal(textBox3.Text);

    if ((Account + Savings) < amount)
    {
        if (Overdrawn != null)
            Owerdrawn(this, new OverdrawnEventArgs (Account, amount));

        Account = (Account + Savings) - amount;
        Savings = 0m;
    }

    ...

    textBox1.Text = Account.ToString();
    textBox2.Clear();
    textBox3.Text = Savings.ToString();
}