MDIChildFormのLoad、UnLoadイベントやActivete、Deactivateイベントが発生するタイミングを
親のMDIFormが知ることは出来るのでしょうか?
事前に知ることは不可能です。
メッセージが流れて、イベントプロシージャに渡る直前に捕まえることなら
メッセージフックかサブクラス化で可能です。
イベントプロシージャに渡った直後でいいなら、
各イベントプロシージャ内でフラグを立てるなり、
実行したい関数を呼ぶなり、親にSendMessageするなりしてください。
やはり、各イベントプロシージャ内で何らかの処理が必要になってくるんですね。
イベントプロシージャ内で実行したい関数を呼ぶことにします。
子イベント発生直後でもよければ、WithEventsで拾えます。
Option Explicit
Private WithEvents Child As VB.Form
Private Sub Child_Activate()
Debug.Print "Form_Activate"
End Sub
Private Sub Child_Load()
Debug.Print "Form_Load"
End Sub
Private Sub Child_Unload(Cancel As Integer)
Debug.Print "Form_Unoad"
End Sub
Private Sub MDIForm_Load()
Set Child = New Form1
Child.Show
End Sub
# この場合、フォーム数分のWithEvents変数が必要となります。
# もし、子フォーム数が不定である場合は、イベント管理用の
# クラスを、別途自作する必要があります。
ツイート | ![]() |