/// <summary> /// フォーム終了時イベント /// <param name="sender"></param> /// <param name="e"></param> /// </summary> private void MenuForm_FormClosing(object sender, FormClosingEventArgs e) { //アプリケーションを終了するかどうか判定 this.ClosingStatus = new CommonLogic().CheckWhetherToExit(this.Visible, this.ClosingStatus); switch (this.ClosingStatus) { //アプリケーションを終了 case ClosingType.Exit: Application.Exit(); break; //終了をキャンセル case ClosingType.Cancel: this.ClosingStatus = ClosingType.DoNothing; e.Cancel = true; break; //何もしない case ClosingType.DoNothing: break; } }
/// <summary> /// アプリケーションを終了するかどうかチェック /// フォームが閉じられるときに呼ばれ、アプリケーションを終了するかどうか判定する /// </summary> /// <param name="formIsVisible">閉じられるフォームが可視状態なのか</param> /// <param name="closingStatus">挙動</param> /// <returns></returns> public ClosingType CheckWhetherToExit(bool formIsVisible, ClosingType closingStatus) { if (formIsVisible) { //フォームが可視状態でClosingTypeがデフォルトの値なら、×ボタンのクリックによるフォームの終了と判断し、 //質問を表示する if (closingStatus == ClosingType.DoNothing) { var result = MessageBox.Show("アプリケーションを終了しますか?", "質問", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { return(ClosingType.Exit); //アプリケーションを終了 } else { return(ClosingType.Cancel); //終了を取り消す } } } //フォームが不可視の状態で呼ばれた場合はフォームを移動しただけと判断し、何もしない return(ClosingType.DoNothing); }