2010-01-03 20 views
6

¿hay alguna forma de desactivar la validación de errorprovider elegantemente cuando haga clic en el botón cancelar para cerrar un formulario de win? La validación siempre ocurre cuando el cuadro de texto pierde el foco, y no quiero validarlo cuando el usuario hace clic en el botón cancelar, es un poco tonto validar cuando el usuario hace clic en cancelar.deshabilite la validación de errorprovider cuando haga clic en el botón Cancelar

Respuesta

14

después de googlear, encontré la respuesta, simplemente establezca la propiedad CauseValidation del botón cancelar en falso. Eso es.

5

Me acabo de topar con esto y configurar CauseValidation = false es solo una solución parcial.

Cuando configura el Form.CancelButton en el botón cancelar, se supone que la tecla Escape invoca ese botón. Sin embargo, la validación aún se ejecuta en respuesta a la tecla Escape, aunque establezcamos CauseValidation = false.

Para solucionarlo, añada el siguiente truco:

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); 
} 
Cuestiones relacionadas