teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

追記①を追加。

2020/04/03 04:41

投稿

urozero
urozero

スコア21

title CHANGED
File without changes
body CHANGED
@@ -45,4 +45,58 @@
45
45
  開発環境:Windows10、Visual Studio Community 2019
46
46
 
47
47
  前回の質問の続きになりますが、実現したいことと関係性はあまりないです。
48
- https://teratail.com/questions/249014
48
+ https://teratail.com/questions/249014
49
+
50
+ ### 追記①
51
+ ライブラリ側終了時にイベント発生、メイン側で受け取り処理をするというアドバイスをいただいて修正した後のソースコードです。
52
+ サブプロジェクト5のソースコードになります。(DB環境的に一番デバックしやすいため)
53
+
54
+ メインプロジェクト Menu.vb
55
+ ```VB
56
+ Public Class Menu
57
+   '各システムのフォームインスタンスを格納するフィールド
58
+   Private SubProjectInstance1 As SubProject5.Form1
59
+   Private SubProjectInstance2 As SubProject5.Form2
60
+   Private SubProjectInstance3 As SubProject5.Form3
61
+   Private SubProjectInstance4 As SubProject5.Form4
62
+
63
+   Private Sub SubProject5_StartBTN_Click
64
+     'インスタンス生成
65
+     Me.SubProjectInstance1 = New SubProject5.Form1
66
+     Me.SubProjectInstance2 = New SubProject5.Form2
67
+     Me.SubProjectInstance3 = New SubProject5.Form3
68
+     Me.SubProjectInstance4 = New SubProject5.Form4
69
+     
70
+     'イベントハンドラを設定
71
+     AddHandler SubProjectInstance1.SubProjectEnd, AddressOf SubProject_SubProjectEnd
72
+     AddHandler SubProjectInstance2.SubProjectEnd, AddressOf SubProject_SubProjectEnd
73
+     AddHandler SubProjectInstance3.SubProjectEnd, AddressOf SubProject_SubProjectEnd  
74
+     AddHandler SubProjectInstance4.SubProjectEnd, AddressOf SubProject_SubProjectEnd
75
+   Ens Sub
76
+
77
+   Private Sub SubProject_SubProjectEnd(sender As Object, e As EventArgs)
78
+     'イベントハンドラを削除
79
+   RemoveHandler SubProjectInstance1.SubProjectEnd, AddressOf SubProject_SubProjectEnd
80
+     'メニュー画面を閉じて、ログイン画面を表示
81
+     Me.close()
82
+     Login.Show()
83
+   End Sub
84
+
85
+ End Class
86
+
87
+ ```
88
+
89
+ サブプロジェクト Form2.vb
90
+ ```VB
91
+ Public Class Form2
92
+   Public Event SubProjectEnd(sender As Object, e As EventArgs)
93
+
94
+   Private Sub CloseButton_Click(sender As Object, e As EventArgs) Handles CloseButton.Click
95
+   'Form2を閉じて、Endイベント発生
96
+ Me.Close()
97
+ RaiseEvent SubProjectEnd(Me, EventArgs.Empty)
98
+ End Sub
99
+
100
+
101
+ End Class
102
+ ```