前提・実現したいこと
Visual BasicでWindowsフォームアプリケーションを作成しています。
Windowsフォームアプリケーションからクラスライブラリに遷移した後、ボタンクリックでWindowsフォームアプリケーションに戻る方法が知りたいです。
構成は下記のように、1ソリューション内の複数プロジェクトになっています。
以上、よろしくお願いいたします。
構成
メインプロジェクト(Windowsフォームアプリケーション)
-Login.vb
-Menu.vb
-LoginInfo.vb(コードのみ)
サブプロジェクト1(クラスライブラリ)1画面
サブプロジェクト2(クラスライブラリ)1画面
サブプロジェクト3(クラスライブラリ)3画面 以下同様
-Form1.vb
-Form2.vb
-Form3.vb
サブプロジェクト4(クラスライブラリ)2画面
サブプロジェクト5(クラスライブラリ)4画面
詳細説明(システム概要、遷移詳細)
メインプロジェクトのLogin.vbでログイン(社員ID、パスワード)後、社員情報を取得してMenu.vbに遷移(Login.vbはvisible=falseにしているのみ)。Menu.vbのボタンクリックでそれぞれのサブプロジェクトに遷移する。
ログインは形だけなので、メインプロジェクトのLogin.vbに遷移できれば解決できると考えています。
該当のソースコード
VB
1'<<<コード⓵:サブプロジェクトへの遷移時、サブプロジェクトForm1のLabelに社員情報表示>>> 2'サブプロジェクトのフォームインスタンスを格納するフィールド 3Private SubProjectInstance1 As SubProject.Form1 4 5Private Sub Button1 click …以下略 6 'サブプロジェクト3の初期フォームインスタンスを生成 7 Me.SubProjectInstance1 = New SubProject.Form1 8 '画面に表示 9 Me.SubProjectInstance1.show() 10 'ログイン情報を設定 11 Me.SubProjectInstance1.部署名.Text = Login.Syain.Dname 12 Me.SubProjectInstance1.氏名.Text = Login.Syain.Name 13End Sub
補足情報(FW/ツールのバージョンなど)
開発環境:Windows10、Visual Studio Community 2019
前回の質問の続きになりますが、実現したいことと関係性はあまりないです。
https://teratail.com/questions/249014
追記①
ライブラリ側終了時にイベント発生、メイン側で受け取り処理をするというアドバイスをいただいて修正した後のソースコードです。
サブプロジェクト5のソースコードになります。(DB環境的に一番デバックしやすいため)
メインプロジェクト Menu.vb
VB
1Public Class Menu 2 '各システムのフォームインスタンスを格納するフィールド 3 Private SubProjectInstance1 As SubProject5.Form1 4 Private SubProjectInstance2 As SubProject5.Form2 5 Private SubProjectInstance3 As SubProject5.Form3 6 Private SubProjectInstance4 As SubProject5.Form4 7 8 Private Sub SubProject5_StartBTN_Click 9 'インスタンス生成 10 Me.SubProjectInstance1 = New SubProject5.Form1 11 Me.SubProjectInstance2 = New SubProject5.Form2 12 Me.SubProjectInstance3 = New SubProject5.Form3 13 Me.SubProjectInstance4 = New SubProject5.Form4 14 15 'イベントハンドラを設定 16 AddHandler SubProjectInstance1.SubProjectEnd, AddressOf SubProject_SubProjectEnd 17 AddHandler SubProjectInstance2.SubProjectEnd, AddressOf SubProject_SubProjectEnd 18 AddHandler SubProjectInstance3.SubProjectEnd, AddressOf SubProject_SubProjectEnd 19 AddHandler SubProjectInstance4.SubProjectEnd, AddressOf SubProject_SubProjectEnd 20 Ens Sub 21 22 Private Sub SubProject_SubProjectEnd(sender As Object, e As EventArgs) 23 'イベントハンドラを削除 24 RemoveHandler SubProjectInstance1.SubProjectEnd, AddressOf SubProject_SubProjectEnd 25 'メニュー画面を閉じて、ログイン画面を表示 26 Me.close() 27 Login.Show() 28 End Sub 29 30End Class 31
サブプロジェクト Form2.vb
VB
1Public Class Form2 2 Public Event SubProjectEnd(sender As Object, e As EventArgs) 3 4 Private Sub CloseButton_Click(sender As Object, e As EventArgs) Handles CloseButton.Click 5 'Form2を閉じて、Endイベント発生 6 Me.Close() 7 RaiseEvent SubProjectEnd(Me, EventArgs.Empty) 8End Sub 9 10 11End Class
回答1件
あなたの回答
tips
プレビュー