Отключить проверку провайдера ошибок при нажатии кнопки отмены
Есть ли способ элегантно отключить проверку 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);
}