如何管理InvalidCastException

时间:2017-02-14 08:38:06

标签: c# exception datagridview

我有一种方法可以用条件绘制datagridview的所有单元格。

我在绘制它们之前解析所有表值,因为我必须知道单元格值是什么来决定什么是颜色。

代码就是这个:

private void rowPainting()
{
    for (int i = 0; i < dataGridView1.RowCount - 1; i++)
    {

        for (int j = 1; j < dataGridView1.ColumnCount; j++)
        {

            try
            {
                double value= Convert.ToDouble(dataGridView1[j, i].Value);

                if ((value> 0) && (value<= 10))
                {
                    dataGridView1[j, i].Style.BackColor = Color.FromArgb(243, 254, 243);

                } else if {

                    dataGridView1[j, i].Style.BackColor = Color.FromArgb(243, 254, 243);        

                }
            }
            catch (InvalidCastException)
            {                         
                Console.WriteLine("value null");
            }
        }
    }
}

问题是某些单元格为空,当我将单元格对象转换为double时,它会生成

  

InvalidCastException的

我想为那些生成异常的行着色并继续该程序。 如何对此例外“无所作为”并正常继续该程序?

2 个答案:

答案 0 :(得分:0)

尝试以下方法:

double value = 0;

if ( !double.TryParse( dataGridView1[j, i].Value, out value ) )
{
    // Do something in here...

}

// Then modify your if statement like so:
if ( ( value > 0 ) && ( value <= 10 ) )
{

}
else if ( value == 0 )
{

}
else
{

}

答案 1 :(得分:0)

  

if(dataGridView1 [j,i] .Value == null)继续;
  double value =   Convert.ToDouble(dataGridView1 [j,i] .Value);