检查形式是关闭

问题描述:

我有一个“离开”事件触发的方法:检查形式是关闭

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事件。 – 2015-03-19 03:15:44

尝试使用Validating事件而不是Leave

然后在FormClosing,你可以设置this.AutoValidate = AutoValidate.Disable;,你的验证将不会被解雇。

如果通过“确定”或“取消”按钮关闭表单,则可能还需要在这些按钮上设置CausesValidation = false(尽管如此,也许您需要进行验证)。