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

これらのフィールドの 1 つに null 値が含まれている可能性があります。文字列に変換しようとすると、nullreferenceexception がスローされます。

文字列に変換して比較する前に、値が null でないかどうかを確認します

于 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 に答える