我有一个触发“离开”事件的方法:
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!")
}
答案 0 :(得分:1)
尝试使用Validating
事件代替Leave
。
然后在FormClosing
中,您可以设置this.AutoValidate = AutoValidate.Disable;
,您的验证将不再被解雇。
如果您通过“确定”或“取消”按钮关闭表单,则可能还需要在这些按钮上设置CausesValidation = false
(可能您希望确认即可)。