- - PR -
動的にCreateされた子フォームへのイベントの追加
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-11-14 14:06
いつも参考にさせていただいております。
早速質問なのですが、 子フォームを3つ持つMDIアプリケーションとフォームをもつDLLがあるとします。 DLLには子フォームがクリックされたときにDLLで設定してあるフォームを表示するという処理が入っています。 アプリケーション起動時に生成される子フォームについては、DLLロード時に全ての子フォームに 「子フォーム.MouseDownEvent += DLL.MouseDownEvent;」 として、イベントを追加することで可能なのですが。 この処理がDLLロード時にのみにしか行なっていないため、新たにCreateされた子フォームでは当然DLLのイベントは起こりません。 そこで、新たにCreateされた子フォームへDLLのイベントを追加したいのですが、どのようにしたらよいのか詰まってしまいました。 また、DLLから親フォームを参照できますが、親フォームからDLLを参照しないという仕様になっています。 DLL側で子フォームがCreateされたということをキャッチしたいのですが、可能でしょうか? どなたか参考になるヒント、アドバイス、記事等ありましたらよろしくお願いいたします。 | ||||||||
|
投稿日時: 2008-11-14 14:37
MDI 子フォームを新しく追加するコードは修正できないんですか?
「DLL」とあるから、手元にあるのはアセンブリだけなんでしょうか? _________________ Nakamura Blog | ||||||||
|
投稿日時: 2008-11-14 14:46
レスありがとうございます。
どちらもコードの修正は可能です。 | ||||||||
|
投稿日時: 2008-11-14 15:09
MDI 子フォームを追加するときは
といったコードを書くと思うので、 この部分を修正してイベントハンドラを登録すればいいと思うんですが。 [ メッセージ編集済み 編集者: なかむら 編集日時 2008-11-14 15:13 ] | ||||||||
|
投稿日時: 2008-11-14 15:53
子フォームを追加する処理はEXE本体(この言い方でよいのかな?)にあり、
イベントに追加する処理はDLLにあります。 EXE本体がDLLを参照しないため、EXE本体はDLLのイベントハンドラを認識できないという状況にあります。 イベントハンドラ登録をDLLで行いたいのですが無理なのでしょうか? | ||||||||
|
投稿日時: 2008-11-14 16:30
「DLL が EXE を参照してる」ということですか? もしそうなら、親フォームに MdiChildAdded みたいなイベントを自分で追加すればいいと思います。 _________________ Nakamura Blog [ メッセージ編集済み 編集者: なかむら 編集日時 2008-11-14 16:32 ] | ||||||||
|
投稿日時: 2008-11-17 15:19
ありがとうございます。
なかむらさんの方法で解決できました。 |
1