创建和使用表单实例给出错误

时间:2015-02-09 11:05:08

标签: vb.net winforms

我使用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.

请任何人帮助我如何避免此错误并成功运行我的代码。

提前致谢

1 个答案:

答案 0 :(得分:0)

虽然它的核心是另一个NullReference Exception,它似乎与您使用表单引用的如何相关。这个问题并没有提供太多的背景,因此需要进行一些猜测。

Dim winform As New RapidSales()
winform.rgv.CurrentRow.Cells("ProductId").Value = myvalue 

以这种方式使用,winformRapidSales表单的实例;它不是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