FormatException计算ListView中列的总和

时间:2013-02-03 21:30:36

标签: c#

我的listview存在问题,我无法计算特定列的总和。

在我的项目中,我正在从excel文件中读取一些信息到ListView,然后通过执行某些操作来处理这些信息。

现在,当我向ListView读取信息时,我无法计算特定列的总和,该函数是: -

private void button12_Click(object sender, EventArgs e)
{

    int iSum = 0;
    foreach (ListViewItem o in this.lsvMain.Items )
    {
        iSum = iSum + Convert.ToInt16(o.SubItems[8].Text);
        textBox1.Text = iSum.ToString();
    }

出现错误消息: FormatException未处理(输入字符串格式不正确)。它指示(iSum ..)行。

没有任何字符串,所有信息都是整数!

3 个答案:

答案 0 :(得分:0)

private void button12_Click(object sender, EventArgs e)
{
    int sum = 0;

    foreach (ListViewItem o in lsvMain.Items)
    {
        int value;
        if (int.TryParse(o.SubItems[8].Text, out value))
            sum += value;
    }

    textBox1.Text = sum.ToString();
}

答案 1 :(得分:0)

当您尝试将Parse(或Convert)某些内容添加到Integer时,您会收到该错误,而这只是Integer

e.g。

var anIntegerValue = Convert.ToInt16("a");

将导致异常:

  

FormatException:输入字符串的格式不正确。

将调试器附加到您的程序,并从列表框中检查您要检索的值。它会让你大吃一惊:)。

Daniel提出的示例将导致同样的问题。 int.Parse()Int32.ParseConvert.Int16Convert.Int32都会导致相同的异常。

答案 2 :(得分:0)

我猜你有这些问题之一:

int aNumber = Convert.ToInt16("15.6"); //throws format exception because of decimal value
int anotherNumber = Convert.ToInt16(""); //throws format exception because there is nothing to convert
int yetAnotherNumber = Convert.ToInt16("-23.00"); //throws format exception because of .00

我猜你正在读取excel文件中的数字并保留其字符串表示。

如果列格式化为数字,我猜测所有数字都表示为“X.00”或类似,因此导致 FormatException