掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Unloadについて (ID:103440)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>> ただ、ネット上ではこのような処理は見かけません。 Unload イベント内での Nothing 代入ですよね? 流石に 15 年も前の言語なので、かなりのコンテンツが失われていますが、 google 等で探したところ、そういったコード例も幾つか見つかりましたよ。 http://www.drive.co.jp/asp/faq/faq_sanka.asp?q_id=12088&genre=VisualBasic http://microsoft.public.vb.general.discussion.narkive.com/P7K98gdm/how-can-a-modeless-form-totally-destroy-itself http://www.gizcollabo.jp/vbtomo/log/archive/vbqanda_29986_0.html 一応、それ自体は VB6 登場よりも、さらに以前でも使われていた手法の一つであり かつてはnewsgroupや mailing list、あるいは専門誌などのサンプルでも 使われていたことがあります。 この他、暗黙ロードされたフォームが残っていないか調べるために 「DoEvents 関数の戻り値」と Forms コレクションの Count を比較するとか、 自身以外のフォームをすべて解放するために、Forms コレクションをループ処理で 順次解放するような処理とかもありましたね。(本題からは外れますが) > 使用方法は前者の方法で、引数は省略しているので > モーダルで表示させています。 引数を省略しているのなら、モードレスになるはずでは…? 結局、モーダルなのでしょうか。それともモードレスなのでしょうか。 とりあえず、VB6ヘルプの「Visual Basic フォームの有効期間」の項と その関連ページを再読しておきましょう。VB の Form オブジェクトにおける 生成・ロード・表示・非表示・アンロード・破棄について記されています。 > イベント内に記述してもTerminateイベントが動いているので > 問題ないのではないかと考えているのですが 動作上の問題はありません。どちらかというと管理上の問題でしょうね。 たとえばコモンダイアログの場合、 CommonDialog1.ShowOpen Text1.Text = CommonDialog1.FileName のようなコードを書きますよね。 コモンダイアログは、モーダルダイアログの一種です。 これと似たようなものを、Form を使って自作して、 Load Form2 Form2.Show vbModal Text1.Text = Form2.OriginalPropertyName と書くようなこともあるでしょう。このような使い方をする場合、 Unload 時に、勝手に「Set Form2 = Nothing」されては困るわけです。 モードレスの場合は、どのタイミングで閉じられるのかが曖昧なので、 コードを簡素化するため、自フォーム自身で破棄することも珍しくありません。 ただし、アンロードしたフォームを再ロードすること(表示/非表示ではなく)が 必要なアプリケーションでは、やはり Unload イベント内での 自己解放が邪魔になるケースもあります。 もちろん、そういった問題が無いのであれば、Unload イベント時に Nothing で解放してしまっても大丈夫でしょう。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.