Vb.net 获取datagridview单元格中的值时出错

Vb.net 获取datagridview单元格中的值时出错,vb.net,winforms,datagridview,nullreferenceexception,Vb.net,Winforms,Datagridview,Nullreferenceexception,我有一个datagridview,它包含5行,列名是:XS、S、M、L和XL 流程是用户首先选择一个品牌(CHL和XRA),如果用户选择XRA,列名将重命名为-,1L,2L,3L,4L 这里的问题是,每次从重命名列名的单元格中获取值时,都会出现这样的错误:对象引用未设置为对象的实例。 这是我从单元格中获取值的示例代码: dvJOBranch.Rows(0).Cells.Item("M").Value.ToString 如果不重命名列,则此代码可以正常工作,但如果重命名列,则会出现错误。如果列的

我有一个
datagridview
,它包含5行,列名是:XS、S、M、L和XL

流程是用户首先选择一个品牌(CHL和XRA),如果用户选择XRA,列名将重命名为-,1L,2L,3L,4L

这里的问题是,每次从重命名列名的单元格中获取值时,都会出现这样的错误:对象引用未设置为对象的实例。

这是我从单元格中获取值的示例代码:

dvJOBranch.Rows(0).Cells.Item("M").Value.ToString

如果不重命名列,则此代码可以正常工作,但如果重命名列,则会出现错误。

如果列的索引没有更改,则可以通过其索引来访问它,而不是通过其名称:

dvJOBranch.Rows(0).Cells.Item(2).Value.ToString 'third column

请注意,对象引用未设置为对象的实例意味着您有一个
NullReferenceException

上面的代码行假定:

  • dvJOBranch.Rows(0)
    不为空,否则对
    单元格的访问将引发
    NullReferenceException
  • dvJOBranch.Rows(0).Cells.Item(2)
    不为空,否则访问
    Item(2).Value
    将引发
    NullReferenceException
  • dvJOBranch.Rows(0).Cells.Item(2).Value
    不为null,否则调用
    .ToString()
    方法将抛出
    NullReferenceException
您需要进行适当的测试来处理空值

If dvJOBranch.Rows(0).Cells.Item(2).Value IsNot Nothing Then
    (...)
End If

另请参见

如果列的索引没有更改,您可以通过其索引而不是其名称来访问它:

dvJOBranch.Rows(0).Cells.Item(2).Value.ToString 'third column

请注意,对象引用未设置为对象的实例意味着您有一个
NullReferenceException

上面的代码行假定:

  • dvJOBranch.Rows(0)
    不为空,否则对
    单元格的访问将引发
    NullReferenceException
  • dvJOBranch.Rows(0).Cells.Item(2)
    不为空,否则访问
    Item(2).Value
    将引发
    NullReferenceException
  • dvJOBranch.Rows(0).Cells.Item(2).Value
    不为null,否则调用
    .ToString()
    方法将抛出
    NullReferenceException
您需要进行适当的测试来处理空值

If dvJOBranch.Rows(0).Cells.Item(2).Value IsNot Nothing Then
    (...)
End If
另请参见尝试以下操作:

If dvJOBranch.Rows(0).Cells.Item(2).Value IsNot Nothing OrElse String.IsNullOrEmpty(dvJOBranch.Rows(0).Cells.Item(2).Value.ToString)
(...)
End if
这里最重要的是OrElse(而不是OR),因为除此之外,等式的第二部分仍然给出NullReferenceException。

请尝试以下操作:

If dvJOBranch.Rows(0).Cells.Item(2).Value IsNot Nothing OrElse String.IsNullOrEmpty(dvJOBranch.Rows(0).Cells.Item(2).Value.ToString)
(...)
End if

这里最重要的是OrElse(而不是OR),因为否则等式的第二部分仍然会给出NullReferenceException。

啊,好的,先生,我现在知道了,我已经将datagridview的值设置为null,谢谢先生:)啊,好的,先生,我现在知道了,我已经将datagridview的值设置为null,谢谢先生:)