For Loop Only显示最后一个循环C#

时间:2018-03-06 19:09:42

标签: c#

如何才能将结果显示为每年的每年和年终值?

double investment_decimal = Double.Parse(txtAmount.Text);
double rate_decimal = Double.Parse(txtRate.Text);
double years = Double.Parse(txtSlideValue.Text);
years = Convert.ToDouble(txtSlideValue.Text);
double calculation = 0;

        //for loop
            for (int i = 1; i < years + 1 ; i++)
            {

                calculation = investment_decimal * Math.Pow((1 + rate_decimal / years), (i));
                txtCalculation.Text = Convert.ToString("Year " + i.ToString() +"\t" + "Year End Value " + calculation.ToString("C")).PadRight(10);
            }

1 个答案:

答案 0 :(得分:2)

在让UI刷新之前,您的代码会对UI元素的文本进行多次分配。这就是为什么只有最后一个项目仍然可见;当你经历循环时,其余的被覆盖。

您应该准备一个与文本框中整个字符串相对应的字符串,并将其一次性放入txtCalculation.Text

StringBuilder sb = new StringBuilder();
for (int i = 1; i < years + 1 ; i++)
{

    calculation = investment_decimal * Math.Pow((1 + rate_decimal / years), (i));
    sb.AppendFormat("Year {0}\tYear End Value {1:C}\n", i, calculation);
}
txtCalculation.Text = sb.ToString();

请注意使用AppendFormat代替具有多个值的字符串连接运算符+=。如果你想创建一个字符串,而不是追加到StringBuffer,你可以使用string.Format或插入C#6的字符串。