我正在尝试将我的 datagridview 上选定行的列值添加到 Collection(但如果我使用 List 或 Array 执行此操作,则会出现相同的错误)
代码:
Dim zdgv = MyDataGridView
For a = 0 To zdgv.SelectedRows.Count - 1
MsgBox(zdgv.Rows(zdgv.SelectedRows(a).Index).Cells(0).Value.ToString)
Try
MyCollection.Add(zdgv.Rows(zdgv.SelectedRows(a).Index).Cells(0).Value.ToString)
Catch ex As Exception
MsgBox(ex.Message)
MsgBox(ex.InnerException)
End Try
Next
ex.Message = Object reference not set to an instance of an object
ex.InnerException = empty
ex.InnerException.Message = Makes program crash, goes to code screen, highlights MsgBox(ex.InnerException) line, and gives error: Object reference not set to an instance of an object
附加信息:
在 zdgv 上使用 QuickWatch 可以为我提供所有信息。在它(zdgv)之后在行上使用它说:'Rows'未声明。由于其保护级别,它可能无法访问。
附言是的,我用谷歌搜索过,但没有一个类似的问题。是的,我在这里搜索过,但没有信息。我也尝试过 r/visualbasic - 没有...
我什至尝试用这个错误搜索与 c# 相关的东西 - 什么都没有。 :/
提前致谢。
EDIT1:我尝试在新项目中制作非数据绑定(bind)数据 GridView ,并将其中的一个值添加到集合中 - 同样的错误。我想我应该去谷歌搜索“将对象的引用设置为对象的实例”。
EDIT2:这是失败的 - 新手错误。
EDIT3:使用快速 watch
zdgv.Rows(zdgv.SelectedRows(a).Index).Cells(0).Value.ToString
它显示正确的值(正确的值,没有抛出错误)=“1”。
最佳答案
这段代码对我来说就像一个魅力。
您是否忘记了 MyCollection 上的新内容?
Dim zdgv = MyDataGridView
Dim MyCollection As New Collection
For a = 0 To zdgv.SelectedRows.Count - 1
MsgBox(zdgv.Rows(zdgv.SelectedRows(a).Index).Cells(0).Value.ToString)
Try
MyCollection.Add(zdgv.Rows(zdgv.SelectedRows(a).Index).Cells(0).Value.ToString)
Catch ex As Exception
MsgBox(ex.Message)
If ex.InnerException IsNot Nothing Then
MsgBox(ex.InnerException)
End If
End Try
Next
关于vb.net - [VB.NET]对象引用未设置为对象的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18279187/