2015-03-19 4 views
0

У меня есть метод, который стреляет на «Оставить» событие:Проверьте форма закрывается

private void cmbBox1_Leave(object sender, EventArgs e) 
{ 
    bool error = true; 

    if (something == true) 
    { 
     //do stuff... 
     error = false; 
    } 

    if (error == true) 
    { 
     MessageBox.Show("Error!") 
    } 
} 

Проблема заключается в том, что закрытие отсчеты формы, как «уходящая фокус» из-под контроля, поэтому, когда я закрыть формы, появляется окно сообщения. Есть ли способ, по которому я могу поймать закрытие формы как недопустимый параметр? То есть

if (error == true && this.FormClosing == false) 
{ 
    MessageBox.Show("Error!") 
} 
+0

подписаться на событие FormClosing, которое запускается до того, как форма будет закрыта. –

ответ

1

Попробуйте использовать Validating событие вместо Leave.

Тогда в FormClosing, вы можете установить this.AutoValidate = AutoValidate.Disable; и Ваша оценка не будет удалена.

Если вы закроете форму с помощью кнопки «ОК» или «Отмена», вам, возможно, также потребуется установить CausesValidation = false на эти кнопки (возможно, вы хотите, чтобы проверка была подтверждена OK).

Смежные вопросы