如何汇总列表框中的所有数字

时间:2017-10-08 10:23:54

标签: c# listbox

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

我使用的代码:

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”类型异常

     

其他信息:输入字符串的格式不正确。

怎么做?以及如何修复错误。

列表框enter image description here

3 个答案:

答案 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)

你的代码是正确的。在列表框内是否有任何文字?