检查Form是否正在关闭

时间:2015-03-19 03:03:24

标签: c#

我有一个触发“离开”事件的方法:

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

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

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

问题是,关闭表单会从控件中计算为“离开焦点”,因此当我关闭表单时,会弹出消息框。有没有办法可以将Form关闭作为无效参数?即。

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

1 个答案:

答案 0 :(得分:1)

尝试使用Validating事件代替Leave

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

如果您通过“确定”或“取消”按钮关闭表单,则可能还需要在这些按钮上设置CausesValidation = false(可能您希望确认即可)。