- 締切済み
MDIフォームとユーザコントロール
VB.Netでの質問です。 ウィンドウメッセージを受け取りイベントを起こすユーザーコントロールクラス Class UserCtl Private Event MyKeyDown() Private Sub UserCtl_KeyDown() as Handels MyBase.KeyDown RaiseEvent MyKeyDown End Sub End Class プロセスA MDI子フォームにユーザーコントロールを追加し、子フォームにて、UserCtl.MyKeyDownイベントプロシージャでユーザーコントロールがウィンドウメッセージを受け取ったと認識し処理をします。 MDI子フォームはMDI親フォームより、CloseメソッドでしかCloseしません。 プロセスB FindWindowでMDI親フォーム, FindWindowExでMDI子フォーム、ユーザーコントロールハンドルを確認した上で、ユーザーコントロールにウィンドウメッセージをPostMessageします。 質問1 プロセスBからハンドルを探していますが、ウィンドウハンドル,ユーザーコントロールハンドルはいつまで有効なハンドルなのでしょうか? Closeでしょうか、それとも、Disposeでしょうか? 質問2 MDI親フォームでMDI子フォームをCloseした後でも、UserCtl.MyKeyDownは発生できるものなのでしょうか? 質問3 ユーザーコントロールで親フォーム(MDI子フォーム)がCloseされた事を認識する方法はないでしょうか? Me.Parent.IsDisposeでできるかなぁと考えているのですが。 よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- JeanneNet
- ベストアンサー率48% (100/208)
こんにちは、じゃんぬねっと です。 そもそもウィンドウメッセージを使う意図がわかりません。 デリゲードなどで通知しましょう。
補足
解答ありがとうございます。 ウィンドウメッセージで通知してくるプロセスを.Netで作り直すならば、デリケートも考えますが既存プロセスとのI/Fは変更しないのでデリケートは使用できません。 どうも、質問の意図が伝わりきっていないようなので、もう少し粘ってみます。