[VB.NET]对象引用未设置为对象的实例
我试图将datagridview中选定行的列的值添加到集合中(但若使用列表或数组执行此操作,则会出现相同的错误) 代码:[VB.NET]对象引用未设置为对象的实例,vb.net,datagridview,Vb.net,Datagridview,我试图将datagridview中选定行的列的值添加到集合中(但若使用列表或数组执行此操作,则会出现相同的错误) 代码: Dim zdgv = MyDataGridView For a = 0 To zdgv.SelectedRows.Count - 1 MsgBox(zdgv.Rows(zdgv.SelectedRows(a).Index).Cells(0).Value.ToString) Try MyCollection.A
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=对象引用未设置为对象的实例
ex.InnerException=空
ex.InnerException.Message=使程序崩溃,转到代码屏幕,
高亮显示MsgBox(ex.InnerException)行,并给出错误:Object
引用未设置为对象的实例
其他信息:
在zdgv上使用QuickWatch可以提供所有信息。在它后面的行上使用它(zdgv)表示:“Rows”未声明。由于其保护级别,可能无法访问
是的,我在谷歌上搜索过,但没有一个问题是类似的。是的,我在这里搜索过,但没有信息。我也试过r/visualbasic-没什么。。。
我甚至试着用这个错误搜索与c有关的东西——什么都没有/
提前谢谢
EDIT1:我尝试在新项目中创建非数据绑定的datagridview,并将其中的一个值添加到集合中-相同的错误。我想我应该在谷歌上搜索“将对象引用设置为对象实例”
EDIT2:这是一个失败的新手错误
EDIT3:在上使用quickwatch
zdgv.Rows(zdgv.SelectedRows(a).Index).Cells(0).Value.ToString
它显示正确的值(正确的,没有抛出错误)=“1”。ex.InnerException为null,您尝试访问is消息属性。这是正常的行为。 你应该试试这样的东西
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
只有子方法在InnerException下抛出异常时,InnerException才不是空的。这段代码对我来说就像一个符咒 你忘了在你的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
在代码顶部-在公共类类名的正下方和第一个子类的上方
我收集了这个:Public XXXXX
您不需要“创建集合的实例”
,然后尝试向其中添加一些项目
应该是:
Public XXXXX作为新收藏
或者您需要在访问它之前在其他地方创建一个新实例
XXXXX=新系列
我找到的最佳解决方案
基本上,错误在于代码使用了不存在的行
您只需将datagridviewallowUserToAddress
属性设置为false。然后所有的正常循环都会正常工作
Dim zdgv = DataGridView1
For Each row As DataGridViewRow In zdgv.Rows
ListBox2.Items.Add(row.Cells(1).Value.ToString)
Next
或
MK:)您正在引用的对象或属性之一是
null
。你知道错误发生在哪一行吗?@valverij你知道错误发生在哪一行吗?可能是Try
和Catch
之间的单行线;-)什么是MyCollection的可能重复你忘了在上面做一个新的吗?在代码的顶部-就在public class classname
的下面和第一个子目录的上面,我有这样一个:public eilutesnumeriukas As Collection
CSharp Basic.NET?:VB.NET中的Dnull
是无
和=代码>是
,顺便说一句,也许我错了,但如果不是ex,那就是。InnerException什么都不是,
…我用它来尝试查找错误,但还是要感谢这两种方法。目前,我们正在尝试使用SimpleDataGridView在新项目上实现这一点。将查看错误是否重复。@ZebriukasDryžiukas如果您最初的问题不是关于ex.InnerException,请告诉debug并提供有关中断的更多信息part@MatíasfidelizerIf Not(…)Is Nothing
或If(…)Is Nothing
在VB.Net
中完全相同,谢谢。成功了。非常感谢你。我的城市是立陶宛最受游客欢迎的城市之一——它是Telsiai。如果你来这里,我给你拿瓶啤酒。说真的。@ZebriukasDryžiukas我会记得:)你只邀请Matt吗?给每个人免费啤酒!我们知道俄罗斯人是优秀的黑客,我们也知道他们喜欢伏特加。所以我可以假设啤酒可以提高编程技能,对吗?是的@Matt已经回答了-还是谢谢。另外,我在这个线程中使用了MyCollection名称,以减少与未知单词的混淆。
For i as integer = 0 to datagridView1.rows.count - 2
'enter code here
Next