C# ダイアログフォームのOKボタンをクリックしてもフォームを閉じない

ダイアログを作って、AcceptButtonプロパティに設定したOKボタンをクリックすると、そのダイアログフォームは閉じてしまいますが、条件が整っていないときは、OKボタンを押しても閉じないようにするには次のようにします。

checkbox1にチェックがついていなければ、OKボタンを押しても閉じることはできません。

        private void button_OK_Click(object sender, EventArgs e)
        {
            if (checkbox1.Checkd == false)
            {
                close_permition = false;
            }
        }

        bool close_permition = true;

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (!close_permition)
            {
                close_permition = true;
                e.Cancel = true;
            }
        }

OKボタンを押したときだけ、checkbox1を確認してその結果をclose_permitionに保存します。

FormClosingイベントで、close_permitionがfalseなら、
e.Cancel = true として、フォームを閉じることをキャンセルします。

単に、

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (checkbox1.Checkd == false)
            {
                e.Cancel = true;
            }
        }

としてしまうと、キャンセルボタンや、閉じるボタンをクリックしたときに、checkbox1の影響を受けてしまうので、前述のようにしないといけないよ。というお話でした。

0
  • このエントリーをはてなブックマークに追加