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