1

だから私はこのコードを という形式で持っています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.

なぜこれが起こるのか、どうすれば修正できるのか誰か知っていますか? 私は自分の能力の範囲でグーグルで検索しましたが、解決策は見つかりませんでした。助けてください。

4

4 に答える 4

0

私ができる限り、どこにも DataGridTable をインスタンス化していません。宣言しただけです。あなたは必要になるでしょう

DataGridTable = New DataTable

ある時点で、おそらく LoadForm サブで

于 2013-06-04T16:31:01.043 に答える
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
于 2013-06-04T13:53:23.587 に答える
0

LoadForm は正しく実行されていますか? 新しい DataTable をインスタンス化していないようです。したがって、DataGridTable は常に Nothing です。

于 2013-06-04T13:54:58.983 に答える