检查形式是关闭
问题描述:
我有一个“离开”事件触发的方法:检查形式是关闭
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!")
}
答
尝试使用Validating
事件而不是Leave
。
然后在FormClosing
,你可以设置this.AutoValidate = AutoValidate.Disable;
,你的验证将不会被解雇。
如果通过“确定”或“取消”按钮关闭表单,则可能还需要在这些按钮上设置CausesValidation = false
(尽管如此,也许您需要进行验证)。
订阅在表单关闭前触发的FormClosing事件。 – 2015-03-19 03:15:44