- - PR -
MDI子フォームの終了を取得する方法は?
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-02-12 11:48
すいません。
ある条件を言い忘れてました。 こちらは、MDI親フォームをEXE形式ファイルとして、 MDI子フォームをDLL形式で作成しています。 おそらくこの影響で子フォームのClosedイベントが発生しないのでしょうか? | ||||||||||||||||
|
投稿日時: 2004-02-12 14:30
諸農です。
同一のソリューション内に親フォームのプロジェクト、 子フォームのプロジェクトを作成して試してみました。 もちろん子フォームのプロジェクトは.dll形式にビル ドされています。 参照設定はプロジェクトで行っています。 結果、イベントは発生しました。 まさかとは思いますが、子フォームの生成コードで MdiParentに親の参照をセットしていないって事はない でしょうか? できれば、再現できる最小限のコードなどを提示してい ただきたいのですが。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||||||||||
|
投稿日時: 2004-02-12 16:55
こちらは違うソリューションで別々に親(EXE)と子(DLL)を作っています。
(もしかしてこれが原因??) 一応、MdiParentは設定してあります...(>> 諸農さん) 以下にコードを書きます。 (大したことはしてませんが...) (親フォーム) Dim clsStart As Form1.clsStart clsStart = New Form1.clsStart clsStart.Open(Me) (子フォーム)clsStartモジュール Public Function Open(ByRef ParentForm As Form) Dim Form As From1 Form = New Form1 Form.MdiParent = ParentForm Form.Show() End Function Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing MessageBox.Show("子です") End Sub | ||||||||||||||||
|
投稿日時: 2004-02-12 21:09
諸農です。
それはないと思います。
確認です。 1.clsStartと言うクラスは親側のソリューションの中のプロジェクトで 定義されているのですか? 上記の内容だと子フォーム側で定義されているような感触を受けますが、 それだと、親フォームからの呼び出しがよくわかりません。 というか、親フォームのクラス名がForm1だと混同してしまいそうです。 2.親フォームも子フォームもForm1型ですか? もしもそうだとすると、エイリアスの解決で実は親フォームが生成され ているって事はないですか? #私の場合、混同を避けるために敢えて子フォームのクラス名を変更しています。 3.間接的に存在するclsStartクラスを使わずに、単純なプロジェクトで 試しても同様の結果になりますか? こちらで、親フォーム側にclsStartクラスを定義して行った結果、また、 子フォーム側にclsStartクラスを定義して行った結果の双方ともに、 Closing/Closedイベントは発生しました。 #但し、同一ソリューション内でのプロジェクト分けですが。 ちなみに、ご提示がなかったのですが、clsStartクラスの定義は以下のようにしました。
CFormは子フォームとして利用するフォームクラス名です。 open()メソッドでフォームを引き取っていますが、ref(参照渡し)の場合、 呼び出し側で自分を参照するthisをそのまま渡すことができないので いったん変数に格納してから渡しています。 #オブジェクト参照なので参照渡しする意味があるとは思えませんが。 #また、ref渡しをしなくてもClosing/Closedイベントは期待通りに発生しています。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ |