Datagridview 返回空值
Datagridview returning null value
我有一个名为“lookuptable”的表单,其中有一个数据网格视图“dgv1”。我使用面板“panel3”在我的主窗体“仪表板”中插入了“lookuptable”。
代码如下:
Private Sub btnPOS_Click(sender As Object, e As EventArgs) Handles btnPOS.Click
TabControl1.SelectedTab = POS
Dim f As New LookUpTable With {.TopLevel = False, .AutoSize = False}
f.Dock = DockStyle.Fill
Me.Panel3.Controls.Add(f)
f.Show()
End Sub
我正在尝试获取单元格编号 5 的值,但出现此错误 System.NullReferenceException:'Object reference not set to an instance of an object.'
这是我用来获取值的代码:
Private Sub CustomPrice_Load(sender As Object, e As EventArgs) Handles MyBase.Load
PriceTxtBox.Text = LookUpTable.dgv1.CurrentRow.Cells(5).Value
'KeyPreview = True
End Sub
Dgv1 单元格 5 有数据。那么为什么它返回 null?
正如我评论的那样,您当前遇到的问题是因为当代码在第一个代码片段中创建 LookUpTable
f
表单时...
Dim f As New LookUpTable With {.TopLevel = False, .AutoSize = False}
然后 f
是该方法的本地。因此,当代码到达第二个代码片段时......它不会知道形式 f
...... 换句话说,如果我们尝试访问第二个代码片段中的形式 f
这条线…
PriceTxtBox.Text = f.dgv1.CurrentRow.Cells(5).Value.ToString()
编译器会抱怨它不知道f
是什么……
因此,一种可能的解决方案(不一定是最佳解决方案)是使 f
成为全局变量,例如...
Dim f As LookUpTable
然后像下面这样更改其他代码片段。
Private Sub btnPOS_Click(sender As Object, e As EventArgs) Handles btnPOS.Click
TabControl1.SelectedTab = POS
f = New LookUpTable With {.TopLevel = False, .AutoSize = False}
f.Dock = DockStyle.Fill
Me.Panel3.Controls.Add(f)
f.Show()
End Sub
不清楚调用以下代码的位置,因为它似乎是一个 Load
事件。但是,如果它的形式与上面的代码相同,那么这应该可以工作……
Private Sub CustomPrice_Load(sender As Object, e As EventArgs) Handles MyBase.Load
PriceTxtBox.Text = f.dgv1.CurrentRow.Cells(5).Value
'KeyPreview = True
End Sub
我希望这是有道理的。
我有一个名为“lookuptable”的表单,其中有一个数据网格视图“dgv1”。我使用面板“panel3”在我的主窗体“仪表板”中插入了“lookuptable”。
代码如下:
Private Sub btnPOS_Click(sender As Object, e As EventArgs) Handles btnPOS.Click
TabControl1.SelectedTab = POS
Dim f As New LookUpTable With {.TopLevel = False, .AutoSize = False}
f.Dock = DockStyle.Fill
Me.Panel3.Controls.Add(f)
f.Show()
End Sub
我正在尝试获取单元格编号 5 的值,但出现此错误 System.NullReferenceException:'Object reference not set to an instance of an object.'
这是我用来获取值的代码:
Private Sub CustomPrice_Load(sender As Object, e As EventArgs) Handles MyBase.Load
PriceTxtBox.Text = LookUpTable.dgv1.CurrentRow.Cells(5).Value
'KeyPreview = True
End Sub
Dgv1 单元格 5 有数据。那么为什么它返回 null?
正如我评论的那样,您当前遇到的问题是因为当代码在第一个代码片段中创建 LookUpTable
f
表单时...
Dim f As New LookUpTable With {.TopLevel = False, .AutoSize = False}
然后 f
是该方法的本地。因此,当代码到达第二个代码片段时......它不会知道形式 f
...... 换句话说,如果我们尝试访问第二个代码片段中的形式 f
这条线…
PriceTxtBox.Text = f.dgv1.CurrentRow.Cells(5).Value.ToString()
编译器会抱怨它不知道f
是什么……
因此,一种可能的解决方案(不一定是最佳解决方案)是使 f
成为全局变量,例如...
Dim f As LookUpTable
然后像下面这样更改其他代码片段。
Private Sub btnPOS_Click(sender As Object, e As EventArgs) Handles btnPOS.Click
TabControl1.SelectedTab = POS
f = New LookUpTable With {.TopLevel = False, .AutoSize = False}
f.Dock = DockStyle.Fill
Me.Panel3.Controls.Add(f)
f.Show()
End Sub
不清楚调用以下代码的位置,因为它似乎是一个 Load
事件。但是,如果它的形式与上面的代码相同,那么这应该可以工作……
Private Sub CustomPrice_Load(sender As Object, e As EventArgs) Handles MyBase.Load
PriceTxtBox.Text = f.dgv1.CurrentRow.Cells(5).Value
'KeyPreview = True
End Sub
我希望这是有道理的。