单击取消按钮时禁用errorprovider的验证

时间:2010-01-03 15:03:51

标签: winforms errorprovider

有没有办法在点击取消按钮解除winform时优雅地禁用errorprovider的验证? 验证总是在文本框失去焦点时发生,并且我不想在用户单击取消按钮时验证它,当用户单击取消时验证它有点愚蠢。

2 个答案:

答案 0 :(得分:15)

谷歌搜索后,找到了答案,只需将取消按钮的CauseValidation属性设置为false即可。就是这样。

答案 1 :(得分:6)

我自己也遇到了这个问题,设置CauseValidation = false只是部分解决方案。

当您将Form.CancelButton设置为取消按钮时,Escape键应该调用该按钮。但是,即使我们设置了CauseValidation = false,它仍会运行以响应Escape键。

要修复它,请添加以下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);
}