Отключить проверку провайдера ошибок при нажатии кнопки отмены

Есть ли способ элегантно отключить проверку errorprovider при нажатии кнопки отмены, чтобы закрыть winform? Проверка всегда происходит, когда текстовое поле теряет фокус, и я не хочу его проверять, когда пользователь нажимает кнопку отмены, просто глупо проверять, когда пользователь нажимает кнопку отмены.

2 ответа

Решение

После поиска в Google, найдя ответ, просто установите для свойства CauseValidation кнопки отмены значение false. вот и все.

Я просто столкнулся с этим сам и настройка CauseValidation = false это только частичное решение.

Когда вы устанавливаете Form.CancelButton для кнопки отмены клавиша Escape должна вызвать эту кнопку. Тем не менее, проверка по-прежнему выполняется в ответ на клавишу Escape, даже если мы установили CauseValidation = false,

Чтобы исправить это, добавьте следующий хак:

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);
}
Другие вопросы по тегам