Nullreferenceexception未由用户代码处理。你调用的对象是空的

时间:2015-04-24 06:12:21

标签: c# datagridview nullreferenceexception

我有一个不同名称的列字段。例如,我从ABC加载文件。并且名称列字段将是ABC。

我必须在选择ABC行对象时才显示按钮。

我在下面编写了一个代码,但它抛出异常。如果有人建议我这样做会很有帮助。

FormViewButton fvb = FormViewButton.getInstance();

        foreach (DataGridViewRow row in this.dataGridView1.Rows)
        {
            row.DefaultCellStyle.SelectionBackColor = this.dataGridView1.DefaultCellStyle.SelectionBackColor;


            bool selectedRow = row.Cells["Name"].Selected;

            if (row.Cells["Name"].Value.ToString().Equals("ABC") && selectedRow == true) // A Nullreferenceexception was unhandled by user code is thrown here. 
            {
                fmv.showButton.Visible = true;
            }
            else if (!row.Cells["Name"].Value.ToString().Equals("ABC") && selectedRow != true)
            { 
                fmv.showButton.Visible = false;
            }

        }

2 个答案:

答案 0 :(得分:1)

这是因为row.Cells["Name"]row.Cells["Name"].Value不存在。

解决方案:当您遍历Rows的{​​{1}}时,请检查索引:

  • 如果DataGridView则是标题行
  • 如果RowIndex == -1 == dataGridView1.NewRowIndex则为新行,而单元格RowIndex将为Value

...并检查是否null,以防万一

答案 1 :(得分:0)

如果单元格或字符串变量为null并且您尝试将一些字符串方法附加到它,例如something.ToString()或something.indexof等,则C#将始终抛出空异常错误。