お世話になります。VB.NET初心者です。
Visual Studio 2017で簡易なWindowsフォームアプリを作っています。
機能概要
簡単な画面遷移は以下です。
(親)[検索Form]→(子)[編集Form]→(孫)[結果Form]
1)検索画面で「検索ボタン」を押下すると、結果を一覧表示する。
2)一覧から対象を選択して「編集ボタン」を押下すると、編集画面をモーダル表示。
3)編集画面で「更新ボタン」を押下すると、結果画面をモーダル表示。
やりたいこと
1)[結果Form]を閉じた際に、[編集Form]も閉じる。
2)[検索Form]で自動的に再検索して、編集後の状態を一覧に表示したい。
ソースコード
ソースコードは以下の通り実装しています。
(親)検索Form.vb
'親Formのインスタンス作成 Private Property _検索FormInstance As 検索Form Public Property 検索FormInstance() As 検索Form Get Return _検索FormInstance End Get Set(ByVal value As 検索Form) _検索FormInstance = value End Set End Property (略) '画面ロード Private Sub 検索Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load (略) 'インスタンスに設定 検索FormInstance = Me (略) End Sub '検索ボタン押下(←孫画面から起動したいメソッド**) Public Sub btn_search_Click(sender As Object, e As EventArgs) Handles btn_search.Click (略) End Sub '編集ボタン押下 Private Sub btn_edit_Click(sender As Object, e As EventArgs) Handles btn_edit.Click (略) Dim f = New 編集Form f.ShowDialog(Me) f.Dispose() (略) End Sub
(子)編集Form.vb
'更新ボタン押下 Private Sub btn_update_Click(sender As Object, e As EventArgs) Handles btn_update.Click (略) Dim f = New 結果Form f.ShowDialog(Me) f.Dispose() (略) End Sub
(孫)編集Form.vb
'OKボタン押下 Private Sub btn_ok_Click(sender As Object, e As EventArgs) Handles btn_ok.Click Me.Owner.Close() Me.Close() 検索Form.検索FormInstance.btn_search_Click(sender, e) ←★ End Sub
問題点
「やりたいこと」の2)の実装の際に
上記の★のコードで、以下のエラーが発生します。
オブジェクト参照がオブジェクト インスタンスに設定されていません。
参照したい親フォームのインスタンスがNullとなっています。
親フォームのロード時に設定しているので、問題ない認識でした。
初歩的な質問で大変恐縮ですが、どうぞ解決策をご教示いただきますよう、宜しくお願いいたします。
参考
この機能は、下記を参考にして実装しました。
【dobon.net 別のフォームのデータを取得、設定する】
http://dobon.net/vb/dotnet/form/accessanotherformdata.html
環境
Visual Studio 2017
.NetFramework 4.6.1
回答1件
あなたの回答
tips
プレビュー