- - PR -
新しいフォームが開く前に前のフォームが閉じてしまう
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-04-20 12:46
フォームAからフォームBを表示して、Aを隠すことをしたいのですが、
表示が遅いのか、Bが表示される前にAが隠れてしまいます。 私の書き方がわるいのでしょうか。 どなたか、おわかりになる方、よろしくお願いします。 ▼--フォームAのBを呼び出すメソッド--▼ formB As New formb formB.Owner = me formB.showdialog ▲----------------------------------▲ ▼-----フォームBのLoadメソッド------▼ Me.Owner.hide() 以後、処理がいくつか... ▲----------------------------------▲ | ||||
|
投稿日時: 2004-04-20 13:10
Form.Loadイベントの説明を見てください。
フォームが初めて表示される直前に発生します と書いてあります。 | ||||
|
投稿日時: 2004-04-20 14:22
回答ありがとうございます。
Form.Loadは直前でした。私の認識ちがいでした。すみません。 そうなると、 フォームAからフォームBを表示して、Aを隠すことをしたいのですが、 どのような構成になるのがいいのでしょうか。 皆さんはどのように実現していらしてますか? ちなみにAがBをshodwdialogで呼んでいるのは、Bを閉じてAに戻ってきたときに 後処理を行っているためです。 識者の方、よろしくお願いします。 | ||||
|
投稿日時: 2004-04-20 16:10
Form.Activatedイベントが利用できるんじゃないでしょうか。
ただし、Activatedイベントは初期起動時以外でも発生するので 注意が必要です。 | ||||
|
投稿日時: 2004-04-20 16:32
フォームが2,3個の使い捨てプログラムというならActivatedでもPaintでもいいかもしれませんが、そうでないならフォーム全体を司るオブジェクトを作ると良いかもしれませんね。「どのフォームを表示する」、「どのフォームを非表示にする」等を操作する役割を持った。
あるいは、初めてPaintイベントが発生した時に発生するイベントをFormBに作るとか。 FormAではそれを受けて自分を非表示にするというのはどうです。 | ||||
|
投稿日時: 2004-04-20 16:41
個人的なやり方…
FormA(FormBを表示する側)に、Activatedイベントにマッチするメソッドを用意する。 このメソッドでは、すぐにActivatedイベントからメソッドをはずす。 その後、自分自身を非表示にする。 FormBを表示するときは、FormBのインスタンス作成後、Activatedイベントに上記のメソッドを追加後、ShowDialogで表示する。 ※単に、操作される側のフォームに手を入れたくない(条件を付けたくない)場合に使うやり方です。 たくさんあるなら、一郎さんの仰るように何らかの管理クラス等を用意した方がいいかもしれません。 | ||||
|
投稿日時: 2004-04-20 18:46
FormAのほうで
これだとFormBでは何もやる必要ないです。ただ、ちょっとトリッキーかも。 | ||||
|
投稿日時: 2004-04-21 15:59
回答ありがとうございます。
画面表示をコントロールするオブジェクトを作るのが 一番皆が使うにはよさそうですね。 ちょっと作りを考え直して見ます。 ありがとうございました。 |
1