- ベストアンサー
VB2010Eで作成したプログラムの終了コード
こんばんは、VB2010Eを使ってプログラミングをしています。 私のプログラミングのスキルは初心者(上・中・下で言うなら、下の中くらい;)です。 なのでお手柔らかにお願いします<(_ _)> 作っているプログラムに終了ボタンを作ったのですが、クリックイベントのコードに 『Close()』と『Application.Exit()』のどちらを書くべきでしょうか? 用途は、自作のプログラムを普通に終了させたいです。 (ウィンドウの右上角の[×]ボタンの様に普通に…) 出来れば、『Close()』と『Application.Exit()』の違い等も教えて下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんわ。 プログラム全体を終了させたい場合は、Application.Exit()を呼び出します。 開いているフォームを閉じたい場合には、Close()ですね。 フォームが1つしかない場合、どちらを呼んでも大差はありませんが、 もし、そのフォームを活用して、いくつものフォームを持つ、なんて拡張を考えた場合、 どちらにするかよく考えておきましょう。 たとえば、「終了メニュー」ならば、Application.exit()。 「閉じるボタン」ならば、Me.Close()と言った具合です。 普段から、なるべく拡張性が高いように作っておくのが吉ですよ。
その他の回答 (2)
- MARU4812
- ベストアンサー率43% (196/452)
アドレス間違え(*ノノ) [Application.Exit メソッド](VB2010) http://msdn.microsoft.com/ja-jp/library/system.windows.forms.application.exit(v=VS.100).aspx
- MARU4812
- ベストアンサー率43% (196/452)
過去、古いバージョンでは、Application.Exit は強制終了でした。 よっぽどの事が無い限り「使ってはならない」と教わりました。 パソコンのコンセントを抜くのと同じで、プログラムで使っていた メモリ領域等の後始末をせずに終了させる命令だったからです。 [Application.Exit メソッド](VB.NET2003) http://msdn.microsoft.com/ja-jp/library/system.windows.forms.application.exit(v=vs.71).aspx >注意 Application.Exit メソッドが呼び出されてアプリケーションを終了する場合、 > Form.Closed イベントと Form.Closing イベントは発生しません。これらのイベント > のいずれかに実行する必要がある検証コードがある場合は、 Exit メソッドを呼び出す > 前に、開いている各フォームに対して Form.Close メソッドを個別に呼び出す必要があります。 [Application.Exit メソッド](VB2010) http://qanda.rakuten.ne.jp/qa6593379.html > このメソッドによって、アプリケーションが強制的に終了されるとは限りません。 最新版では、微妙な表現に変わって、改善されたような、他の問題が増えたような 感じになってます。 > FormClosing イベントが発生します。このイベントをキャンセルするには、それらの > FormClosingEventArgs パラメーターの Cancel プロパティを true に設定します。 キャンセルできるらしいので、終了しない可能性が出てきてしまいました。 勘違いを避ける意味でも、プログラムの終了まできちんとプログラムするという観点 からも、Close を使う事を推奨します。
お礼
すみません。自己解決致しました(・∀・*)ノ 有難うございました!
補足
ご回答ありがとうございます。 でも、ちょっと内容が私にはサッパリです。すみません(汗) 例: Public Class Form1 '※フォーム上に"終了ボタン"を作った場合のクリックイベント。 Private Sub CloseButton_Click(~略~) Handles CloseButton.Click '※Close()とMe.Close()はどちらを使えば良いでしょうか? Close() End Sub End Class 色々省きましたが上記の様な単純な使い方でよいのでしょうか? よろしくお願いします。
お礼
こんばんわ。 Application.exit()とClose()の違いが少しだけわかりました。 そしてMe.Close()の "Me." は今回初めて知りました!!(そのくらいの初心者です…) まだ私の勉強不足です。 ご回答ありがとうございました<(_ _)>