環境によるフォーム隠しの違い

解決


なめこ  2003-04-16 15:05:07  No: 106722  IP: [192.*.*.*]

いつも勉強させていただいてます。以下の点がどうしてもわかりません。

【処理内容】
フォーム1に配置しているボタンからフォーム2を起動し、フォーム1は隠すという単純なプログラムです。
ボタン押下時のソースは以下の様な内容で記述しています。

フォーム2.Show
Me.Hide

フォーム2のLoadイベントで時間のかかる処理を行うため、フォーム2のLoadが完了するまでフォーム1が表示された状態となります。

【問題点】
このLoad完了待ち状態で、まだ表示されているフォーム1をバシバシとクリックを繰り返します。
するとフォーム1のタイトルバーに「応答なし」と表示され、その後しばらくすると、フォーム1・フォーム2とも表示された状態となってしまいます。
本来フォーム1は隠したいのですが・・・。

【開発環境】
OS:XP Pro  又は  Win2K Pro
VB:6.0(SP5)

この現象はOSがXP Proの場合にのみ発生しています。
なんとか回避する方法はあるのでしょうか?
ご存知の方がいらっしゃいましたら、ご教授ねがいます。

編集 削除
delta-bee  URL  2003-04-16 22:07:01  No: 106723  IP: [192.*.*.*]

Gyakunishitemirebaasdfaadfasdfasdfaasdfasd ASFAADSFAS

編集 削除
delta-bee  URL  2003-04-16 22:10:38  No: 106724  IP: [192.*.*.*]

逆にしてみればうまくいくはずです。

Me.Hide
Form2.Show

別に先に実行しているフォームを隠してもその先にコードは進みます。ので、これでもOKです

Unload Me
Form2.Show

また、どうしても順番を逆にしたくない場合は先にフォームをロードしておく。

'コマンドボタンを押す前にこの処理をする。Meのロード時がいいかと思われる
Load Form2

そして、普通に書き込めばOK
Form2.Show
Me.Hide

一番お勧めなのは順番を逆にするだけのものです(笑
Me.Hide
Form2.Show

編集 削除
delta-bee  2003-04-16 22:11:26  No: 106725  IP: [192.*.*.*]

ローマ字で書いてあるのは、間違っちゃったものなので気にしないでください(/ω\) ハジカシー

編集 削除
なめこ  2003-04-17 11:22:18  No: 106726  IP: [192.*.*.*]

delta-beeさん、お返事ありがとうございます!

まず順番を逆にする方法ですが、フォーム2が表示完了となるまで画面から消えてしまいます。
実行プログラムがあたかも落ちた様に見えるので、できればこの方法は避けたかったのです。

次に「Load Form2」を記述する方法を行ってみましたが、応答無しの現象は解消できませんでした。

そこで、フォーム2のLoadイベントで以下の記述を行うことで、対策できました。
Me.Show

とりあえず期待通りの結果となるのですが、なんでフォームのLoadイベントの最中にこんな記述を行わなければいけないのか不満です。
これってXPのバグなんですかね?またお得意の仕様?

色々とありがとうございました。

編集 削除