我使用visual studio 2010在vb.net winform中创建了一个简单的表单(Name RapidSales)。我在此表单上有datagridview1。每当我使用以下代码调用它时,它就能成功运行: -
RapidSales.rgv.CurrentRow.Cells("ProductId").Value = myvalue
但每当我在这个'RapidSales'表单的实例中创建,然后编写并运行以下代码时,它会给我一个错误:
Dim winform As New RapidSales()
winform.rgv.CurrentRow.Cells("ProductId").Value = myvalue
错误信息如下: -
Object reference not set to an instance of an object.
请任何人帮助我如何避免此错误并成功运行我的代码。
提前致谢
答案 0 :(得分:0)
虽然它的核心是另一个NullReference Exception,它似乎与您使用表单引用的如何相关。这个问题并没有提供太多的背景,因此需要进行一些猜测。
Dim winform As New RapidSales()
winform.rgv.CurrentRow.Cells("ProductId").Value = myvalue
以这种方式使用,winform
是RapidSales
表单的新实例;它不是RapidSales
的任何现有默认实例的对象引用。此时rgv
控件(DGV?)根本不存在任何行,因此NRE会引用这些空对象。
如果RapidSales.rgv.CurrentRow.Cells("ProductId").Value = myvalue
有效,则表示已经创建了表单的默认实例,并且可能会显示要填充的控件等。您可能需要这样的内容:
' module/class/form level variable for the other form
Private winform As RapidSales
'... elsewhere when it is needed:
If winform Is Nothing ' test if already instanced
winform = New RapidSales()
' other setup stuff
End If
winform.Show()
' else where use it:
Sub Something(myvalue As Integer) ' no idea of the Type
winform.rgv.CurrentRow.Cells("ProductId").Value = myvalue
...
End Sub