Domanda

c'è un modo per disabilitare la convalida del ErrorProvider elegantemente quando fare clic sul pulsante Annulla per eliminare una WinForm? La convalida avviene sempre quando la casella di testo perdere la concentrazione, e non voglio per convalidare quando l'utente fa clic su pulsante di annullamento, è solo un po 'sciocco per convalidare quando l'utente fa clic annullare.

È stato utile?

Soluzione

dopo googling, trovato la risposta, basta impostare la proprietà CausesValidation del pulsante di cancellazione su false. il gioco è fatto.

Altri suggerimenti

Ho appena incontrato questo me stesso e l'impostazione CauseValidation = false è solo una soluzione parziale.

Quando si imposta la Form.CancelButton al pulsante di annullamento, il tasto Esc si suppone per invocare quel pulsante. Essa, tuttavia, la convalida corre ancora in risposta al tasto Esc, anche se abbiamo impostato CauseValidation = false.

Per risolvere il problema, aggiungere il seguente trucco:

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);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top