我想总结列表框中的所有数字,数字来自数据库 日期类型是金钱,每次我点击按钮我想在列表框中显示数字的总和。
我使用的代码:
decimal sum = 0;
private void but_TotalSale_Click(object sender, EventArgs e)
{
for (int i = 0; i < lst_Price.Items.Count; i++)
{
sum += Convert.ToDecimal(lst_Price.Items[i].ToString());
}
textBox1.Text = Convert.ToString(sum);
}
我收到此错误
mscorlib.dll中发生未处理的“System.FormatException”类型异常
其他信息:输入字符串的格式不正确。
怎么做?以及如何修复错误。
答案 0 :(得分:1)
我认为问题在于您将listitem转换为不使用列表项内的值的字符串。
试试这个:
decimal sum = 0;
private void but_TotalSale_Click(object sender, EventArgs e) {
for (int i = 0; i < lst_Price.Items.Count; i++) {
sum += Convert.ToDecimal(lst_Price.Items[i].Text);
}
textBox1.Text = Convert.ToString(sum);
}
答案 1 :(得分:0)
为什么要在第一时间转换为字符串
lst_Price.Items[i]
是一个对象,而Convert.ToDecimal()
有一个重载,可以获得object
所以可以做到
for (int i = 0; i < listBox1.Items.Count; i++)
{
sum += Convert.ToDecimal(lst_Price.Items[i]);
}
或LINQ
的一行sum = lst_Price.Items.OfType<object>().Sum(x => Convert.ToDecimal(x));
答案 2 :(得分:0)
你的代码是正确的。在列表框内是否有任何文字?