C#中用列表求文本框输入总和并显示到Label?当前代码仅显最后值
问题解决:文本框输入构建double列表总和无法正确显示
问题原因
- 每次执行代码时,
List<double> Val = new List<double>();都会创建全新的空列表,仅添加当前输入的expenses.Amount,因此Val.Sum()的结果就是单次输入的值。 expenses.total = 0.0;每次都会将总和重置为0,之后再加上当前列表的总和,最终结果自然只会保留最后一次输入的值。
解决方案
将存储数值的列表和总和变量声明为类的成员变量,避免每次处理输入时重新初始化,确保数据能持续累加。
修改后的代码示例
首先在类的作用域内声明成员变量(不要放在处理输入的方法里):
// 类成员变量,仅初始化一次 private List<double> _expenseValues = new List<double>(); private double _total = 0.0;
然后在处理输入的方法中编写逻辑:
// 假设已将文本框输入转换为double类型并赋值给expenses.Amount _expenseValues.Add(expenses.Amount); // 直接计算列表的总和 _total = _expenseValues.Sum(); // 显示到Label控件 Display.Text = _total.ToString();
另一种写法(如果保留expenses类的total属性)
如果需要继续使用expenses.total,同样要避免每次重置它,直接用列表总和赋值:
// 类成员变量 private List<double> _valList = new List<double>(); // 输入处理方法内 _valList.Add(expenses.Amount); expenses.total = _valList.Sum(); Display.Text = expenses.total.ToString();
内容的提问来源于stack exchange,提问作者Aaron Kindi
相关产品推荐
相关产品推荐

