- - PR -
[VB.NET]モーダルフォームの起動時のメッセージ表示について。
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-12-09 14:23
では、Timerで。
_________________ たつごろー codeseek こみゅぷらす | ||||
|
投稿日時: 2004-12-09 14:47
MessageBoxのOwnerをFormAにしてみるのはいかがでしょうか?
in FormA FormB formB = new FormB(); formB.Owner = this; formB.ShowDialog(); ... in FormB MessageBox(this.Owner, ... ... | ||||
|
投稿日時: 2004-12-09 14:47
なるほど。やはり他に方法といえば、Timerしかないでしょうか。
結局のところ、初回起動時のForm_Activatedが完了するまでの間にMessageBoxを表示した際に、VB6ではきちんと呼出元フォームはModalで扱われていたのですが、VB.NETでは不完全なのでしょうか。 MessageBoxを出すタイミングをForm_Activatedが完全に終了した後に持ってこれれば確かに問題はないのですが、Activatedが終了したことを知らせるイベントなどはないでしょうし、それ以降は、ユーザーから何らかの入力がなければイベントが発生しないと思うので、メッセージをどのタイミングで表示させればいいのかがわからなかったのです。 それもひとつの手として考えます。ありがとうございます。 | ||||
|
投稿日時: 2004-12-09 15:42
iStation様 ご返答ありがとうございます。
ご提示いただいた内容を試してみましたところ、うまくいきそうです! 呼出元のFormAの変更も、ShowDialg時に、Ownerを指定するだけの変更ですみそうですし、その方向で調整してみたいと思います。 これまでご返答いただいた方々も、ありがとうございました。 | ||||
|
投稿日時: 2004-12-09 16:31
P.S.
formB.Owner = this; formB.ShowDialog(); は、 formB.ShowDialog(this); と短くなります。 | ||||
|
投稿日時: 2004-12-09 21:54
ん〜?FormAはさわれなくなるけど、FormBはさわれるような?
で、Activatedに置くと、例えば他のアプリを起動していて、そのアプリに制御を移し、戻ってくるとまた走っちゃいますよね。そういうのって、いいの? _________________ | ||||
|
投稿日時: 2004-12-09 22:03
こちらで試してみたところでは、FormBもさわれませんでした。
あと、Activatedは、フラグなどを設けて、1度しか通らないように制御しておりますので、不用意にActivatedないの処理が走ることはないようにしています。 | ||||
|
投稿日時: 2004-12-10 14:18
Whidbey(VS2005)ではモーダルダイアログが改善されているようですが、VS2003と動作が多少異なる(完璧になった!)ようなので注意ください。
| ||||
