2

嗨,我编写了这段代码来在gridview 中搜索carderial。但我得到一个错误:

“你调用的对象是空的。”

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

最有可能的是,以下内容为空,当您取消引用它时会导致异常:

  • 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

首先检查单元格中的值是否不为空(如果调用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 回答