Form_InitializeでのUnload処理

解決


シン  2011-06-16 19:28:11  No: 102960

Form_InitializeでのUnload処理は有効ではないのですか?
実際試してみると、Form_Unloadのイベントに入ってきません。
もし、Form_Initializeで終了させたい場合はEndを使用するしかないですか?

よろしくお願いします。


魔界の仮面弁士  2011-06-16 22:07:07  No: 102961

> Form_InitializeでのUnload処理は有効ではないのですか?
そもそも Initialize の時点では、まだロードされていませんよね。
Initialize イベント中に意図的にロードした場合は別として。

「初期化されているがまだロードされていない」状態のオブジェクトを
Unload ステートメントにかけた場合は何も起きません。
Load 済みのオブジェクトのみが Unload 対象となります。

> 実際試してみると、Form_Unloadのイベントに入ってきません。
QueryUnload/Unload イベントが呼び出されるのは、
「Unload ステートメントが呼び出された時」
ではなく、
「実際にアンロード処理が実行された時」
ということです。

> Form_Initializeで終了させたい場合はEndを使用するしかないですか?
そもそもの作り方が間違っているように思えます。

「条件に応じて、Form の起動をキャンセルする」
という作りにしているのであれば、そうではなく、
「条件に応じて、Form を起動するかどうかを切り替える」
という制御にするのが自然かと。

どうしても Initialize イベント自体を中止したいのであれば、
Err.Raise ステートメントで任意のエラーを発生させることで、
初期化作業が止まります。呼び出し側に On Error 処理は必要ですが。


シン  2011-06-17 02:19:04  No: 102962

魔界の仮面弁士さん

Form_Unloadはそういうことだったのですね。よくわかりました。

> 「条件に応じて、Form を起動するかどうかを切り替える」
いちおMainFormの処理で、Initial時に問題があればソフトを落とすということをしたかったので。
処理考え直します。

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


シン  2011-06-17 05:55:08  No: 102963

解決です。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加