• ベストアンサー

VB2010Eで作成したプログラムの終了コード

こんばんは、VB2010Eを使ってプログラミングをしています。 私のプログラミングのスキルは初心者(上・中・下で言うなら、下の中くらい;)です。 なのでお手柔らかにお願いします<(_ _)> 作っているプログラムに終了ボタンを作ったのですが、クリックイベントのコードに 『Close()』と『Application.Exit()』のどちらを書くべきでしょうか? 用途は、自作のプログラムを普通に終了させたいです。 (ウィンドウの右上角の[×]ボタンの様に普通に…) 出来れば、『Close()』と『Application.Exit()』の違い等も教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんばんわ。 プログラム全体を終了させたい場合は、Application.Exit()を呼び出します。 開いているフォームを閉じたい場合には、Close()ですね。 フォームが1つしかない場合、どちらを呼んでも大差はありませんが、 もし、そのフォームを活用して、いくつものフォームを持つ、なんて拡張を考えた場合、 どちらにするかよく考えておきましょう。 たとえば、「終了メニュー」ならば、Application.exit()。 「閉じるボタン」ならば、Me.Close()と言った具合です。 普段から、なるべく拡張性が高いように作っておくのが吉ですよ。

noname#255795
質問者

お礼

こんばんわ。 Application.exit()とClose()の違いが少しだけわかりました。 そしてMe.Close()の "Me." は今回初めて知りました!!(そのくらいの初心者です…) まだ私の勉強不足です。 ご回答ありがとうございました<(_ _)>

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.3

アドレス間違え(*ノノ) [Application.Exit メソッド](VB2010) http://msdn.microsoft.com/ja-jp/library/system.windows.forms.application.exit(v=VS.100).aspx

全文を見る
すると、全ての回答が全文表示されます。
  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.2

過去、古いバージョンでは、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 を使う事を推奨します。

noname#255795
質問者

お礼

すみません。自己解決致しました(・∀・*)ノ 有難うございました!

noname#255795
質問者

補足

ご回答ありがとうございます。 でも、ちょっと内容が私にはサッパリです。すみません(汗) 例: Public Class Form1 '※フォーム上に"終了ボタン"を作った場合のクリックイベント。 Private Sub CloseButton_Click(~略~) Handles CloseButton.Click '※Close()とMe.Close()はどちらを使えば良いでしょうか? Close() End Sub End Class 色々省きましたが上記の様な単純な使い方でよいのでしょうか? よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VB 作成したプログラムを終了したのですが、何か残っています。

    こんばんわ。 VB6SP5でプログラムを作っています。 クローズボックスで終了してもVBのツールバーの「終了」ボタンが実行されている時のままになっています。 何かウインドウが残っているのかと思いますが、何か残っているか調べる方法がわかりません。残っているウインドウをdebug.print等で表示する方法はあるのでしょうか?

  • VB.NetのプログラムでVB6.0のプログラム2

    お世話になります。 VB.Netで作成されたプログラムAがあります。 VB6.0で作成されたプログラムBがあります。 プログラムBはイベント待ち状態になっており、特定のイベント(ボタンクリックイベント等)で特定のプロシジャーを実行するようになっております。 プログラムAからプログラムBの特定のイベントを発生させる、もしくはプログラムBの特定のプロシジャーを実行させる方法を探しております。 前回同じような質問をさせていただきましたが、こちら側からWindowsイベントとVB6.0のイベントの指定の説明が抜けておりましたので、改めて質問をさせていただきます。 何卒よろしくお願い申し上げます。

  • 終了してもプログラムが実行したまま(VB)

    非常に時間のかかる繰り返し処理を行なうプログラムを作りました。どのくらい、プログラムが進行しているのかわかりやすくするため、 Progress.Show でProgressという名前のフォームを表示し、そこに、プログラムが何%終わったのか表示するようにしました。 プログラムはDo Loop文が使ってあるので、何%終わったのかを表示するためにLoopした回数を取得して、それをフォームに表示することにしましたが、どこかで調べたら機械は、Do Loopのあいだはフォーム上に文字を表示するのに手が回らないからDoEventsを使ってイベントを実行させなさい、といわれました。 そこまではうまくいきました。プログラムを実行すると、プログラムが実行されて何%終わったかもちゃんと表示できるようになりました。 ところが、プログラムの実行中にフォームの右上の×ボタンを押したところ、フォームは画面から消え、プログラムが終了したように見えるのに、VB Editorでは[実行中]となっており、終わってくれません。ずっとDo Loopが実行されたままです。 Private Sub Form_Terminate() のところに Unload Progress と書いても、「Unloadメソッドは使えません」などというエラー・メッセージが出ます。(フォーム上にボタンを置き、そこをクリックするとUnloadするようにしてみましたがやはり同じことを言われました。) 原因は何でしょうか? フォームをUnloadする、ということの意味をちゃんと理解していないのでいけないのだと思うのですが、調べてもよく言っていることがわかりません。 よろしくお願いします。

  • VBプログラムを終了させないようにするには

    VB2005 WindowsXPでの開発を考えています。 メニューボックスは表示せず、終了ボタンからの終了にはパスワードの入力を求めるようにします。 しかしこれだけでは、タスクマネージャ等からの強制終了ができてしまいます。 強制終了も不可能にすることは可能でしょうか? また、できるのであればプログラム起動中は、Windowsの操作(エクスプローラやスタートメニューなど)をできないようにしたいと考えています。現状ではモーダル状態のフォームを最大化して表示させようと思っていますが、他に良い方法を御存知でしたらお願い致します。

  • (VBA)ブックを閉じるプログラム

    表題の通りで、マクロを使ってブックを閉じるプログラムが作りたいです。 具体的には、 "終了"というボタンを作って、このボタンを押したときのみ変更を保存せずに、ブックを閉じる。 右上のXマークを押して閉じようとした場合は、"終了ボタンで終了して下さい"とメッセージを 表示させて、必ず終了ボタンで閉じる。 のようなプログラムです。 ネットで調べ、みよう見まねでプログラムを組んでみましたが、完全にブックが消えません。 また×ボタンを押した場合にブックを閉じない様にするプログラムが分かりません。 <組んでみたプログラム> Sub test2() Application.DisplayAlerts = False Workbooks("Book1.xls").Close Application.DisplayAlerts = True End Sub ご教授お願い致します。

  • (VB2008EEです)Form1からForm2をモーダレスで表示(S

    (VB2008EEです)Form1からForm2をモーダレスで表示(Show(Me))したのち、 Form2を、(Form2の)閉じるボタン(右上にあるXボタン)で閉じるときに、 単にHideするだけの処理に変更することは可能でしょうか。 デフォルトでは、閉じるボタンですと、Close()と同様、 Close(&Dispose)となると思いますが、Hide()処理に 変えられるかということです。 。。。 試しに、FormClosingイベントハンドラでHide()→e.cancel=Trueって やってみたところ、(再度同じForm2のインスタンスを使ってShowができ、 さらに前回のText表示などが残っているなど)その場はうまく行ったように 見えたのですが、そうすると、アプリ(Form1)が閉じるボタンで終了しなくなって しまいました。 (Application.Exitでもダメ、Endでは(強制終了とのことなので)OKですが) Form2のClose処理をCancelしているからだ、とは思いますが。 ShowDialog→Xボタン(同じ記述のまま) の後では、終了可能です。 では、Show→Xボタンのあとで、同じインスタンスで、上記と同じように、 ShowDialog→Xボタンとしたあと、Form1のXボタンでアプリを 終了させようとするとどうなるか。 結果は、終了不能でした。 一度Show→Xしたらそれをどこかに覚えている?ってことなのでしょうか。。。 ここらへんの現象まで、合わせて説明できる方がいらっしゃったら 合わせてご説明いただけませんでしょうか。 。。。 なお、なぜこんなことするの?という実際論はここではなしで 純粋に技術論でお願いいたします。

  • vbのアプリケーション終了

    RS232cで繋がれた外部媒体と通信を行うアプリケーションをVBで作成しました。 通信を行った(オープン・クローズをきちんと実施)後、endコマンドによりアプリを終了させようとしたんですが、終わりませんでした どんな問題が考えられるのでしょうか? どうかよろしくお願いいたします。

  • プログラム終了時のデータ送信処理@VB6

    プログラム終了時のデータ送信処理@VB6 複数のフォームがあり(A-Z)プログラム終了の際はどのフォームがアクティブであっても、 かならずフォームAをアンロードするようにプログラムされています。 フォームAにはWinsockコントロールが2個使われておりフォームがアンロード(UnloadまたはUnloadQuery)される際には相手先にCLOSEとDISCONNECTを送信するようにくみます。 このときに、 送信コマンドをForm_QueryUnloadイベントに組み込んだところデータが送れませんでした。 もちろんForm_Unloadでも送れませんでした。 アンロード時にデータを送信するにはどうすればよろしいでしょうか? ご助力お願いします

  • サブクラス化したアプリケーションの終了方法

    VBで、サブクラス化した1個のウィンドウで構成されるアプリケーションを終了する方法を教えてください。 ホットキーイベントを使うためにサブクラス化したら、endメソッドは使えなくなりました。closeを実行してもウィンドウが閉じません。APIでcloseイベントを発生させて、イベントを受け取った際に、終了させるコードをいろいろと記述してみましたが、どれも失敗してお手上げです。

  • VBとVC++について

    タイトルのVBについてですが、プログラミング言語というのはわかるのですが、具体的にどの様な事に特徴があってメリットといいますか使いやすさ!?などはどうなのでしょうか? また、excel等にもVBが入っていると思うのですが(マクロ)、その他、企業などでもアプリケーション開発などにVBにて行っているようですが、具体的にどの様なアプリケーションソフトウェアがあるのでしょうか? プログラミングは初心者ですが、VBは学びやすく分かりやすいでしょうか? また、VBの将来的な展望はどうなのでしょうか? VBとVC++の用途の違いはなんでしょうか? ご教授お願いいたします。