ここから本文です

VBのフォーム終了操作について

Darkness_Justiceさん

2012/12/1723:14:17

VBのフォーム終了操作について

こんにちは。独学でVBを嗜んでいる中2のものです(*^^*)
現在父にソフト作成を依頼されていまして、VBでフォームアプリを作っています。

フォーム上に終了ボタンがあるとします。

機能としては、×ボタンを押すと中断、終了ボタンを押すと終了する仕組みにしたいと思っています。
また、仕様として、中断のボタンはフォーム上には置かないことになっています。
FormClosingイベントで、×ボタンを押したときに中断するように作ることができたのですが、
終了ボタンを押したときに、
Me.Close()
をするとFormClosingイベントが発生してしまい、終了と中断が重複実行されてしまいます。

ググって End という方法を見つけたのでやってみたら、FormClosingイベントは発生しなくなり重複はしなくなったのですが、
実行時エラーが出てしまいます。

どうしたらよいでしょう。
やはり中断ボタンを設置するしか方法はないのでしょうか?

どなたかご指導お願いします。

閲覧数:
197
回答数:
2
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

for********さん

2012/12/1809:45:31

終了ボタンを押した場合はApplication.Exit()にしておけば
FormClosingイベント内でe.CloseReasonで判断できると思います。

質問した人からのコメント

2012/12/18 19:46:19

降参 皆様回答ありがとうございました。お陰様で無事完成しそうです(*^∀^*)
nlfotisさんの回答も、終了処理以外でも活かせるな、と思いましたが、
今回は異常終了にも対応できるこちらの回答内容を選ばせていただきました。

ベストアンサー以外の回答

1〜1件/1件中

2012/12/1800:49:39

×ボタンで中断する(終了しない)
という標準とは異なる動作というのは、お勧めはしませんが、次のようにすれば可能です。

Public Class Form1

Private blnEnd As Boolean

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
blnEnd = True
Me.Close()
End Sub

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If Not blnEnd Then
'中断処理
MessageBox.Show("中断します。", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)
e.Cancel = True
End If
End Sub

End Class

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる