示例#1
0
        /// <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;
            }
        }
示例#2
0
        /// <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);
        }