C#:每次单击后更新只读文本框的值

时间:2018-03-07 19:04:22

标签: c# winforms

我正在尝试在每次点击后更新只读文本框中的值“月数”和“余额”。在给定的上下文中,当应用程序开始时,它们的起始值都应为0。每次点击后都应该更新它们,只需加上几个月(1,2,3等)。余额应显示每次点击时累计的特定值。

余额等于每月储蓄金额每月复利,因此它取决于每次点击后产生的月数。

我可以在每次点击后点击月份计数器,因为您将在代码中看到,但我无法弄清楚如何更新余额并在每次激活“下个月”按钮后显示它。

log.Info("typeof:" + typeof(FunctionResult));

我的表格:

enter image description here

P.S。这是更新的代码,是的我有其他问题!

命名空间Assignment1_BTM380 {     public partial class frmSavingsCalculator:Form     {         public frmSavingsCalculator()         {             的InitializeComponent();         }

public partial class frmSavingsCalculator : Form
{
    public frmSavingsCalculator()
    {
        InitializeComponent();
    }

    int months = 0;
    double balance = 0;

    private void btnNext_Click(object sender, EventArgs e)
    {
        double monthlypmt;
        int annualrate;

        if (double.TryParse(txtMonthlySavings.Text, out monthlypmt))
        {
            if (int.TryParse(txtAnnualInt.Text, out annualrate))
            {
                annualrate = annualrate / 100;
                double monthlyrate = annualrate / 12;
                double changerate = (1 + monthlyrate);

                txtMonths.Text = months.ToString();

                months++;

                balance = monthlypmt + Math.Pow(changerate, months);

                txtBalance.Text = balance.ToString("c");
                balance++;       
            }
            else
            {
                MessageBox.Show("Please insert valid interest rate.");
            }
        }
        else
        {
            MessageBox.Show("Please insert valid number.");
        }
    }

        private void btnExit_Click(object sender, EventArgs e)
    {
        this.Close();
    }
}

}

所以,如果你有耐心,请耐心等待。每次点击“下个月”按钮时,我设法得到两个文本框,只有我似乎无法在余额中获得适当的值。根据我教授的例子,在12个月后,余额应该显示619.86美元,仅在我的表格中显示868.06美元。我认为问题在于平衡计算,我希望你们中的一些人可以评论。

感谢所有花时间回复的人!

1 个答案:

答案 0 :(得分:0)

您实际上做得对,问题是由于类型变量问题,您在初始计算后总是得到相同的结果。

问题在于本地变量" annualrate"是整数。

最初它有意义,因为你强迫他们在文本框中写一个整数。然而,当你通过将它除以100来实现它时,问题就出现了。

annualrate = annualrate / 100;

除非文本框中的比率大于或等于100,否则总是会得到零的比率,因为数学上0到100之间(不包括100)除以100之间的任何数字的结果总是在0和1之间(不包括1)。例如,50%的比率应该给你0.5,但由于整数除法,结果只会为0。

一个简单的解决方法是:

...
double realannualrate = annualrate / 100;
double monthlyrate = realannualrate / 12;
...

您可能还想考虑将计算和初始化移动到单独的函数