デベロッパセンター(変です) への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者   (社会人) 投稿日時 2008/12/13 18:29:52
フォームを閉じるというのと、見えないようにするは違うことです。
閉じないで、隠しっぱなしだとどんどんリソースを食いつぶしていきますよ?

デフォルトのインスタンスしか使わないのであれば問題ないのかもしれないですけど。
それでも、再度表示すると前に入力したものが残ってたり中途半端な感じがします。
投稿者   (社会人) 投稿日時 2008/12/13 17:59:49
画面上に見えないようにするっていうのと、
操作できないようにするってのは意味が違うよ。

Form2.Text="変更前"
Form2.ShowDialog()
Form2.Close()
Form2.Text="変更後"


Dim f As Form2 = New Form2()
f.Text="変更前"
f.ShowDialog()
f.Close()
f = Nothing
f.Text="変更後"


この2つの違いが分かればいいけど。
あそこの話は基本であり重要な部分でもあるからできればちゃんと読んでおくべき。
投稿者 デカ(刑事)メロン  () 投稿日時 2008/12/13 15:24:26
z>かなりバカだなwww
桜さん>Form1.visible=False
Form3.visible=False
Form4.visible=False
とかで十分かと。まぁ、あそこの掲示板は5人しか居ないけどね(苦笑)
投稿者 (削除されました)  () 投稿日時 2008/12/13 11:54:16
(削除されました)
投稿者   (社会人) 投稿日時 2008/12/13 10:41:37
さらっとしか見てないですが、動けばよいという回答なら場合によってはApplication.Exitもありなのかもしれません。
今回の質問の答えとしては当てはまりませんが。

過去にわんくまの方と何があったのかは存じませんが、私にはお二方とも別に勘違いしているようには思えません。どのように設計して実装するのが、良いのかという点を論じてるだけだと思います。

それと、消したいフォームのオブジェクトを使えなくするは、ちょっと違うと思います…。
使えなくするというのがどういう状況かわかりませんが、Nothingを代入するとかを思い浮かべてしまいますが、それだとフォームは閉じないですよね?
投稿者 刑事(デカ)メロン  (中学生) 投稿日時 2008/12/13 09:52:56
よく読んだら、変な質問だ。
しかし簡単なことだな。
それに2005とか2008とか質問者は書いてないが、よく返答できるもんだね。
消したいフォームのオブジェクトを使えなくすればいいだけのことだろ。
あんなに長く解説してさぁ(^^)
投稿者 (削除されました)  () 投稿日時 2008/12/13 09:36:40
(削除されました)
投稿者   (社会人) 投稿日時 2008/12/13 07:27:37
これやね
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=4145870&SiteID=7

質問者さん曰く
>つまりいくつかフォームがあって 特定のフォームの終了処理で他のフォームも閉じたいのです。スタートアップに指定したフォームは除いて
だそうだけど、何?Application.Exit()?
アプリ終了させてどうすんの?馬鹿なの?し(ry

まぁ、物凄ーく好意的な見方をすれば、これも既定のインスタンスの弊害なのかもねぇ。
投稿者 dekiaメロン  (中学生) 投稿日時 2008/12/13 05:46:22
form2 からform1をクローズするには 

こんな質問がマイクロソフトの掲示板(ニセ?)で書いてありました。
長々と返信が書いてある。
フォーム2のクローズイベントに
Application.Exit()
で何か問題があるんでしょうか。
たった1行でできるのに。