有没有一种优雅的方式在单击取消按钮以关闭Winform时禁用ErrorProvider的验证?当文本框失去焦点时,始终进行验证,但我不希望在用户单击取消按钮时进行验证,因为在用户单击取消时进行验证有点傻。
有没有一种优雅的方式在单击取消按钮以关闭Winform时禁用ErrorProvider的验证?当文本框失去焦点时,始终进行验证,但我不希望在用户单击取消按钮时进行验证,因为在用户单击取消时进行验证有点傻。
通过谷歌搜索,找到答案了,只需要将“Cancel”按钮的CauseValidation属性设置为false即可。就这样。
我最近也遇到了这个问题,设置CauseValidation = false
只是一个部分解决方案。
当你将Form.CancelButton
设置为取消按钮时,按下Esc键应该会触发该按钮。然而,即使我们设置了CauseValidation = false
,验证仍然会在按下Esc键时运行。
要解决这个问题,请添加以下hack:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
// Although we set CausesValidation = false for the Cancel button,
// the Escape key fails to cancel due to validation failure. The
// Form.CancelButton property should invoke the validation-free
// cancel button, but doesn't. Force the issue here.
if (keyData == Keys.Escape)
{
DialogResult = DialogResult.Cancel;
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}