掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
フォームが一緒に閉じられてしまうのを回避するには?【.NET】 (ID:116586)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
[VB.NET]では[VB6.0]と違って Form1 とかいうフォーム名を 記述しても対象のフォームの"実体"をグローバルに指しません。 必ず参照変数を用意してそこに新しく New するなどして実体化 したオブジェクトの参照を格納します。参照が全て開放されて しまうとフォームオブジェクトは開放されてしまいます。この コードと質問内容から想像するに、変数を宣言する場所と宣言の 解釈に色々と問題がありそうです。『New』や『インスタンス』 という言葉について学んで下さい。 Form2 の参照変数 >public Form2_form as New Form2() を Form1 のクラス内で宣言していませんか? >form1_form.close() すると form1_form として実体化していた Form1 のクラスが 破棄・開放され、当然その中で使われていた変数は全て破棄・ 開放されます。Form2_form も開放されます。 プログラムの起動時の設定はどうなっているのでしょうか? Form1 起動なら Form2 に制御を渡して自分が消えてしまう ようなプログラムは開放されない変数(Form など)が残る可能性 がありそうで、あまり良くないですね。 1つの方法として、Form1 の閉じる処理で処理をキャンセルし、 非表示にする事で回避できると思います。ただし、非表示にした Form1 をプログラムを終了したい時に閉じないと、これまた終了 しないプログラムになってしまいます。 ボクが勧めるのは全体を制御する親クラスを別に用意し、Sub Main 起動で親のクラスから Form1 を表示、Form1 のボタン押下で親クラスに 通知して Form1 は閉じて開放。親クラスが Form2 を表示するような 設計です。ご検討下さい。 過去ログ『別フォーム』などで検索しても似たような質問が 引っかかると思います。一度、目を通してみてください。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.