我已经使用visual studio 2010在vb.net winform中创建了一个简单的表单(名为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.请任何人帮助我怎样才能避免这个错误并成功运行我的代码。
提前感谢
发布于 2015-02-09 20:45:22
从本质上讲,这是另一个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有关explicit form instances的更多信息
https://stackoverflow.com/questions/28408267
复制相似问题