- - PR -
モーダレスフォームの終了イベントを知ることはできる?
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-02-24 00:54
VB.NET 2003, .NET FrameWork 1.1 で開発しています。
Form1から、Form2をモーダレスで開いた後に、Form2が終了(Close,Dipose)した場合、Form1でそのイベントを取得することは可能でしょうか? もし取得できないとすれば、Form2が終了したという情報を取得する方法はあるのでしょうか? Form1からForm2を開く方法は、以下の様にしています。 Class Form1 : dim frm as Form1 frm = New Form1 frm.Show() : End Class | ||||||||||||
|
投稿日時: 2006-02-24 01:02
普通に Closed イベントを処理するだけですが。 | ||||||||||||
|
投稿日時: 2006-02-24 01:34
Form2 の Closed イベントを Form1 で取得したいのですか?
Form2 で起きたことは Form2 で処理しましょう。 方法はないわけではないです。 Form1 に Form2 の Closed イベント ハンドラを仕込んだり、 終了通知することで可能ですが、依存関係ができちゃいますので止めた方が良いでしょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-02-24 01:50
んー、Form2自体に結び付いた後始末ならForm2自身でやるべきでしょうけど、 モードレスフォームが閉じたときにってのはありそうな気もしますが。 まあ場合によりますけど、まずい方向の話じゃないようにも思います。 でまあ、やりたいならイベントをハンドルするだけですね。 Application.Exitなんかを使ってるのなら、場合によっては注意が必要ですが。 | ||||||||||||
|
投稿日時: 2006-02-24 02:09
確かに何をするかにも因りますね。 ただ、Form1 と Form2 が並行している状況で、 Form2 を閉じたら「何かする」というのが Windows GUI 的には思いつかないんですよね。 そういう場合って ShowDialog メソッドを使うべき場面になっちゃいますし。 いずれにしても、「何の目的で」というのを元質問者さんに聞くべきでした... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-02-24 09:45
とか?クラスフィールドにしたりとか、Containerにぶち込んどいたほうがいいとかいろいろありますがそれはそれとして。 どっちにしろまずいものでもないでしょう。そもそも貼り付けたコントロールだって何の関係もないはずのFormで処理してたりするんだから。 いや、まぁこのレベルの質問をしてくるということは設計的にまずいところがあるはずだと思う気持ちも分からないでもないんですけど。 ちなみにこんな感じにイベントを登録します>ガーリックさん。VBですからたぶんAddHandlerとかいうので追加できます。
こう?VBはほとんど書いたことがないのでいい加減ですが [ メッセージ編集済み 編集者: ya 編集日時 2006-02-24 09:49 ] | ||||||||||||
|
投稿日時: 2006-02-24 10:23
カンマが抜けているだけっす。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-02-24 11:13
思いつくのはヘルプツールウィンドウ的なものでフォーム間で情報をペーストするやつとか。 でもって、親フォームには表示するツールバーボタンがあってそのPushedなどを変化させるとか。 |