2017-10-08 58 views
-4

我想总结列表框中的所有数字,数字来自数据库 日期类型是金钱,并且在每次点击按钮时我想显示总结列表框中的数字。如何总结列表框中的所有数字

代码我使用:

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); 
     } 

而且我得到这个错误

型 'System.FormatException' 未处理的异常出现在mscorlib.dll

更多信息:输入字符串的格式不正确。

该怎么办?以及如何解决错误。

列表框中enter image description here

+1

那么,在错误之后,输入字符串是什么?当抛出错误时,'lst_Price.Items [i] .ToString()'的值是多少? (假设这是引发错误的那一行...是这样吗?) – David

+0

在你的for循环中的一行放置一个断点并检查'lst_Price.Items [i]'。 – Filburt

+0

时间是数字全部 –

回答

1

我认为这个问题是你的列表项转换为字符串不使用列表项中的数值。

试试这个:

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); 
} 
+0

我试过,但没有工作,我试图删除'.text'和'.tostring',但我仍然在错误'.tostring'抛出错误,并且在代码中不接受文本'.text' –

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)); 
0

你的代码是正确的。列表框里面是否有文字?