• ベストアンサー

サブフォームのイベントを取得するには?

同じソリューションにフォームA、フォームBがあり、フォームBは フォームAから起動されます。 フォームBがクローズした時、フォームAのメソッドを走らせたい のですが、その手段がわからず困っています。 別のフォームのイベントを取得する方法をご存知でしたら、 ご教授ください。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

起動というのは、モーダルダイアログではないと仮定しての回答です。 Form1(質問のフォームA)のButton1でForm2(質問のフォームB)を起動。 DisposedまたはFormClosedイベントのどちらかを使用して下さい。 Public Class Form1 Private WithEvents a As Form2 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click a = New Form2 a.Show() End Sub Private Sub a_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles a.Disposed MsgBox("DISPOSED") a = Nothing End Sub Private Sub a_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles a.FormClosed MsgBox("CLOSED") a = Nothing End Sub End Class

ginfix
質問者

お礼

ありがとうございます。 参考にさせていただき、目的の動作を実現できました。

その他の回答 (1)

  • NYOI
  • ベストアンサー率58% (56/96)
回答No.2

フォームAの方に以下のメソッドを用意します。 Public Sub FormB_Closed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) MessageBox.Show("FormBが閉じられたよ!") '実際はこの部分に行いたい処理を書く End Sub フォームBのLoadイベントに、以下の様にコードを書きます。 Private Sub FormB_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load AddHandler Me.FormClosed, AddressOf FormA.FormB_Closed End Sub これで、フォームBが閉じられたとき(正確にはFormB.FormClosedイベントが発生したとき)に、FormAのFormB_Closedメソッドが呼び出されるようになります。

ginfix
質問者

お礼

ありがとうございます。 参考になりました。

関連するQ&A