いつも勉強させていただいてます。以下の点がどうしてもわかりません。
【処理内容】
フォーム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の場合にのみ発生しています。
なんとか回避する方法はあるのでしょうか?
ご存知の方がいらっしゃいましたら、ご教授ねがいます。
Gyakunishitemirebaasdfaadfasdfasdfaasdfasd ASFAADSFAS
逆にしてみればうまくいくはずです。
Me.Hide
Form2.Show
別に先に実行しているフォームを隠してもその先にコードは進みます。ので、これでもOKです
Unload Me
Form2.Show
また、どうしても順番を逆にしたくない場合は先にフォームをロードしておく。
'コマンドボタンを押す前にこの処理をする。Meのロード時がいいかと思われる
Load Form2
そして、普通に書き込めばOK
Form2.Show
Me.Hide
一番お勧めなのは順番を逆にするだけのものです(笑
Me.Hide
Form2.Show
ローマ字で書いてあるのは、間違っちゃったものなので気にしないでください(/ω\) ハジカシー
delta-beeさん、お返事ありがとうございます!
まず順番を逆にする方法ですが、フォーム2が表示完了となるまで画面から消えてしまいます。
実行プログラムがあたかも落ちた様に見えるので、できればこの方法は避けたかったのです。
次に「Load Form2」を記述する方法を行ってみましたが、応答無しの現象は解消できませんでした。
そこで、フォーム2のLoadイベントで以下の記述を行うことで、対策できました。
Me.Show
とりあえず期待通りの結果となるのですが、なんでフォームのLoadイベントの最中にこんな記述を行わなければいけないのか不満です。
これってXPのバグなんですかね?またお得意の仕様?
色々とありがとうございました。
ツイート | ![]() |