2

こんにちは、グリッドビューで cardserial を検索するためにこのコードを書きました。しかし、私はエラーが発生します:

"オブジェクト参照がオブジェクト インスタンスに設定されていません。"

foreach (DataGridViewRow row in dataGridView2.Rows)
{
    if (row.Cells["CardSerial"].Value.ToString().Equals(textBox2.Text))
    {
        dataGridView2.Rows[row.Index].DefaultCellStyle.BackColor = Color.Yellow;
    }
}

何が問題なのか教えていただけますか?

4

2 に答える 2

2

ほとんどの場合、次のものは null であり、逆参照すると例外が発生します。

  • dataGridView2
  • row.Cells["CardSerial"]
  • row.Cells["CardSerial"].Value
  • textBox2
  • dataGridView2.Rows[row.Index]
  • dataGridView2.Rows[row.Index].DefaultCellStyle

どちらを見つけるには、プログラムをデバッグし、ウォッチ ウィンドウ、イミディエイト ウィンドウを利用するか、デバッグ/トレース出力行を追加します。

row.Cells["CardSerial"].Value特に注目すべきは、が nullの場合です。

于 2013-07-22T05:32:56.003 に答える
1

最初に、セルの値が null でないかどうかを確認します (呼び出しToStringている場合は失敗します)。

foreach (DataGridViewRow row in dataGridView2.Rows)
{
    var serial = row.Cells["CardSerial"].Value;

    if (serial != null && serial.ToString().Equals(textBox2.Text))
    {
        row.DefaultCellStyle.BackColor = Color.Yellow;
    }
}
于 2013-07-22T05:36:32.323 に答える