Desative a validação do ErrorProvider ao clicar no botão Cancelar
-
22-09-2019 - |
Pergunta
Existe uma maneira de desativar a validação do ErrorProvider elegantemente ao clicar no botão Cancelar para descartar um WinForm? A validação sempre acontece quando a caixa de texto perde o foco, e eu não quero validar quando o usuário clique no botão Cancelar, é um pouco bobo validar quando o usuário clicando em cancelar.
Solução
Depois de pesquisar no Google, encontrei a resposta, basta definir a propriedade Causa Validação do botão Cancelar como false. é isso.
Outras dicas
Acabei de encontrar isso sozinho e configurar CauseValidation = false
é apenas uma solução parcial.
Quando você define o Form.CancelButton
Para o botão Cancelar, a tecla Escape deve invocar esse botão. No entanto, a validação ainda é executada em resposta à chave de escape, mesmo que definamos CauseValidation = false
.
Para consertar, adicione o seguinte 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);
}