ダイアログを作って、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の影響を受けてしまうので、前述のようにしないといけないよ。というお話でした。