//------------------------------------------------------------------------------
//	｢Windows フォーム･アプリケーション｣ を終了する場合に確認を行なう
//
//		このクラスについては，下記の書籍を参照のこと
//		三上直樹：“C# による ｢Windows フォーム｣ プログラミング”，第１章，
//		工学社，2012年
//
//		作成者：三上直樹，2013/01/27 作成，©三上直樹 2013
//------------------------------------------------------------------------------

using System;
using System.Windows.Forms;

namespace Mikami.WindowsApplication
{
	public static class FormCloseConfirm
	{
		static string text_, caption_;
		static Action myAction_;

		// 閉じる際の表示や動作を設定する
		public static void Set(Form aForm, string text = null,
							   string caption = null, Action myAction = null)
		{
			aForm.FormClosing += Close;
			text_ = (text != null) ? text : "終了しますか？";
			caption_ = (caption != null) ? caption : "終了確認";
			myAction_ = (myAction != null) ? myAction : () => {};
		}

		// ｢FormClosing イベント｣ に対する ｢イベント･ハンドラ｣
		private static void Close(object sender, FormClosingEventArgs e)
		{
			DialogResult result =
				MessageBox.Show(text_, caption_,
								MessageBoxButtons.YesNo,
								MessageBoxIcon.Information);
			if (result == DialogResult.No)
				e.Cancel = true;	// 閉じるのをキャンセルする
			else
				myAction_();		// 閉じる場合
		}
	}
}
