所以我的代码名为MyMenuForm
。
Public Class MyMenuForm
Public Sub LoadForm(sender As Object, e As EventArgs)
DataGrid.DataSource = DataGridTable
DataGridTable.Columns.Add("Name", GetType(String))
DataGridTable.Columns.Add("Verison", GetType(String))
DataGridTable.Columns.Add("Compile", GetType(Button))
DataGridTable.Columns.Add("Location", GetType(String))
DataGridTable.Columns.Add("CompileLoc", GetType(String))
End Sub
Public DataGridTable As DataTable
End Class
我希望能够从名为DataGridTable
的其他表单中修改AddForm
。
Public Class AddForm
Public Sub Add_Click(sender As Object, e As EventArgs) Handles AddButton.Click
MyMenuForm.DataGridTable.Rows.Add(NameBox(), VersionBox(), "Compile", LocationBox(), CompileBox())
End Sub
End Class
当我点击AddButton
按钮时,收到错误
Additional information: Object reference not set to an instance of an object.
有谁知道为什么会发生这种情况或我如何解决这个问题?我已经google了我的能力,并没有找到解决方案。请帮助。
答案 0 :(得分:0)
尝试在项目中创建新模块,然后在那里声明数据表..
Public DataGridTable As DataTable
不要以课堂形式宣布公开..
所以你可以调用每个表单类..
Public Class AddForm
Public Sub Add_Click(sender As Object, e As EventArgs) Handles AddButton.Click
DataGridTable.Rows.Add(NameBox(), VersionBox(), "Compile", LocationBox(), CompileBox())
End Sub
End Class
答案 1 :(得分:0)
LoadForm是否正确执行?您似乎还没有实例化新的DataTable。所以DataGridTable总是没有。
答案 2 :(得分:0)
你没有在任何地方实例化DataGridTable,看,你只是声明了它。 你需要一个
DataGridTable = New DataTable
在某些时候,可能在LoadForm子
中答案 3 :(得分:0)
试试我为此示例创建的test project
以下是一些解释:
注意范围非常重要。 Object reference not set to an instance of an object
是一个非常常见的错误,通常表明需要进行某种架构调整。
以下是 MyMenuForm 类的设置。 DataTable被声明为该类的属性,因此任何可以访问该类的人都可以访问该特定属性。
Public Class MyMenuForm
Public DataGridTable As New DataTable
Private Sub LoadForm(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
With DataGridTable.Columns
.Add("Name", GetType(String))
.Add("Verison", GetType(String))
.Add("Compile", GetType(Button))
.Add("Location", GetType(String))
.Add("CompileLoc", GetType(String))
End With
DataGridView1.DataSource = DataGridTable
End Sub
End Class
在尝试添加MyMenuForm
类的行之前,还需要确保已创建AddForm
。在我的情况下,我只是将其添加为启动表单并在点击
在 AddForm 中,请确保引用DataGridTable
类上的MyMenuForm
属性,如下所示:
Private Sub AddButton_Click(sender As System.Object, e As System.EventArgs) Handles AddButton.Click
Dim row As DataRow = MyMenuForm.DataGridTable.NewRow()
With row
.Item("Name") = "TestName"
.Item("Verison") = "TestVerison"
.Item("Compile") = New Button
.Item("Location") = "TestLocation"
.Item("CompileLoc") = "TestCompileLoc"
End With
MyMenuForm.DataGridTable.Rows.Add(row)
End Sub