2010-01-03 2 views
6

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

ответ

14

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

5

Я просто столкнулся с этим сам и установка 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); 
} 
Смежные вопросы