我的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 ..)行。
没有任何字符串,所有信息都是整数!
答案 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.Parse
或Convert.Int16
或Convert.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