错误:“输入字符串的格式不正确。”

时间:2018-10-03 12:35:06

标签: c#

int sum = 0;
        for (int i = 0; i < dataGridView1.Rows.Count;++i)
        {
            sum += Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value);

        }

        label1.Text = sum.ToString();

上面是要计算的代码。 当我运行该应用程序时,它不会显示任何错误。从MySql加载datagridview并按导致上述功能的按钮后,它将显示错误。

  

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

sum += Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value);

Here is an example of the datagridview

如果我将Cells [2]更改为Cells [0],效果很好

我仍然是C#初学者,但我想它无法将“获得”列中的数据转换为整数?

3 个答案:

答案 0 :(得分:1)

考虑到屏幕截图,Cells[2]不是int,而是Decimal和总和应声明为这种类型。

Decimal sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count;++i)
{
    sum += Decimal.Parse((dataGridView1.Rows[i].Cells[2].Value ?? "").ToString());
}

如果由于某些原因该值为空或错误,则可以使用TryParse来检查转换是否成功:

Decimal sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count;++i)
{
    Decimal temp;
    if (Decimal.TryParse((dataGridView1.Rows[i].Cells[2].Value ?? "").ToString(), out temp))
        sum += temp;
}

label1.Text = sum.ToString();

注意:(dataGridView1.Rows[i].Cells[2].Value ?? "")将对dataGridView1.Rows[i].Cells[2].Value执行检查。如果为空,将使用值""代替nullnull.ToString()将引发异常。

答案 1 :(得分:0)

您应该检查该字段是否具有数字值,然后将其转换为int。

float sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count;++i)
{
    float temp = 0;
    float.TryParse(dataGridView1.Rows[i].Cells[2].Value?.ToString(), out temp);
    sum += temp;

}

label1.Text = sum.ToString();

答案 2 :(得分:0)

尝试这个

Decimal sumcol = 0;
for (int i = 0; i < dataGridView1.Rows.Count;++i)
{
Decimal val;
string colval = dataGridView1.Rows[i].Cells[2].Value.ToString();
if(colval  != null){
 if (Decimal.TryParse(colval, out val))
    sum += val;
}

label1.Text = sum.ToString();}