2010-01-03 13 views
6

ist es eine Möglichkeit, die Validierung von Errorprovider elegant zu deaktivieren, wenn klicken, abbrechen winform zu entlassen? Die Validierung geschieht immer dann, wenn die Textbox den Fokus verliert, und ich möchte nicht, dass sie validiert wird, wenn der Benutzer auf Abbrechen klickt. Es ist nur ein bisschen albern zu validieren, wenn der Benutzer auf Abbrechen klickt.deaktivieren Validierung von Errorprovider beim Abbrechen klicken Taste

Antwort

14

nach googeln, fand die Antwort, nur gesetzt CauseValidation Eigenschaft der Schaltfläche auf false abzubrechen. das ist es.

5

Ich bin gerade in diese selbst gerannt und Einstellung CauseValidation = false ist nur eine Teillösung.

Wenn Sie die Form.CancelButton auf die Abbrechen-Schaltfläche festlegen, soll die Escape-Taste diese Schaltfläche aufrufen. Die Validierung wird jedoch immer noch als Antwort auf die Escape-Taste ausgeführt, obwohl wir CauseValidation = false eingestellt haben.

es zu beheben, fügen Sie den folgenden 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); 
} 
Verwandte Themen