非表示の子フォームを閉じて破棄することについて質問があります。
2 つのボタンを持つ親フォーム:
Public Class Form1
Dim F2 As Form2
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
F2 = New Form2
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
F2.Show()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
F2.Hide()
End Sub
End Class
子フォーム:
Public Class Form2
Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
e.Cancel = True
Me.Hide()
End Sub
Private Sub Form2_VisibleChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.VisibleChanged
MsgBox("Form2.Visible = " & Me.Visible.ToString)
End Sub
Private Sub Form2_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
MsgBox("Form2 has been disposed.")
End Sub
End Class
Form1 が開いている限り、Form2 を閉じたくありません。その部分が機能します。
しかし、Form1 を閉じたときに Form2 を閉じたいと思います。Form1 から明示的に閉じる必要がありますか? Form2_FormClosing() にさらにロジックを追加しますか?
現状では、Form2_Disposed() が呼び出されることはありません (メッセージ ボックスは表示されません)。これは正しいです?
Form1 が破棄されると、変数 F2 は存在しなくなります。Form2 は後でガベージ コレクターによって破棄されますか?