1

我想检查 datagridview 的特定单元格是否具有特定值。所以我做了一个双“for”循环来检查列和行。并且在使用“if”检查时会抛出 NullReferenceException。有人可以帮帮我吗?更重要的是,如果我输入“try & catch”这些单元格并被选中并着色(我希望它们被着色)。我不明白。

这是代码:

 for (int column = 0; column < 7; column++)
 {
  for (int row = 0; row < 6; row++)
         {

  if (dataGridView1.Rows[row].Cells[column].Value.ToString() == data.Day.ToString())// EXCEPTION
       {
        dataGridView1[column, row].Style.BackColor = Color.LightGreen;
       }
   }
}
4

3 回答 3

3
dataGridView1.Rows[row].Cells[column].Value.ToString()   

data.Day.ToString())// EXCEPTION

当您尝试转换为字符串时,其中一个字段的值为 null 可能是一个空单元格,抛出 nullreferenceexeption

在转换为字符串并进行比较之前检查值是否不为空

于 2013-06-14T02:13:17.240 回答
0

调试器是你的朋友。在 if 上设置断点并运行您的应用程序。在停止执行时将鼠标悬停在项目上以查看它们的值。您还可以将语句添加到监视窗口以查看它们的值。这将使您能够看到什么是空的。即时窗口也运行良好。只需输入一个 ? 在执行它并打印值的语句之前。

每当您尝试调用方法或访问设置为 null 的对象的成员时,都会收到 NullReferenceException。

于 2013-06-14T02:15:54.033 回答
0

你也可以这样做

YourGridData(DataGridView grid)
{
    int numCells = grid.SelectedCells.Count;

        foreach (DataGridViewCell cell in grid.SelectedCells)
        {
            if (cell.Value != null)
                //Do Something
            else
                //try or catch null here    
        }
}
于 2013-06-14T02:27:34.673 回答