取消按钮点击时禁用ErrorProvider的验证

7

有没有一种优雅的方式在单击取消按钮以关闭Winform时禁用ErrorProvider的验证?当文本框失去焦点时,始终进行验证,但我不希望在用户单击取消按钮时进行验证,因为在用户单击取消时进行验证有点傻。

2个回答

15

通过谷歌搜索,找到答案了,只需要将“Cancel”按钮的CauseValidation属性设置为false即可。就这样。


6

我最近也遇到了这个问题,设置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);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接