49 votes

Comment passer Valider après avoir cliqué sur le bouton Annuler d'un formulaire

J'utilise C#. J'ai un Formulaire Windows avec une zone d'édition et un bouton Annuler. La zone modifier le code lors de la validation de l'événement. Le code est exécuté à chaque fois que la zone d'édition perd le focus. Quand je clique sur le bouton Annuler, je veux juste fermer le formulaire. Je ne veux pas de validation pour la zone d'édition pour être exécuté. Comment cela peut-il être réalisé?

Voici un détail important: si la validation échoue, alors

            e.Cancel = true;

empêche de laisser le contrôle.

Mais lorsqu'un utilisateur clique sur le bouton Annuler, puis sur le formulaire doit être fermé à n'importe quoi. comment cela peut-il être mis en œuvre?

53voto

Daniel Schaffer Points 14707

Si la validation se produit lorsque la zone d'édition perd le focus, rien sur le bouton d'annulation ne va empêcher cela de se produire.

Toutefois, si la validation qui échoue empêche le bouton d'annulation de fonctionner, définissez la propriété CausesValidation du bouton sur false .

Référence: Button.CausesValidation property

37voto

Vimal Raj Points 645

Il est évident que la propriété CausesValidation du bouton doit être définie sur false, l’événement de validation ne se produisant jamais lors de son clic. Mais cela peut échouer si le contrôle parent du bouton a sa propriété CausesValidation définie sur true. La plupart du temps, les développeurs oublient ou oublient de changer la propriété CausesValidation du contrôle conteneur (comme le contrôle du panneau). Définissez-le également sur False. Et cela devrait faire l'affaire.

25voto

Ben Points 856

J'ai eu des problèmes à obtenir mon formulaire de près, depuis la validation de certains contrôles était de l'arrêter. J'avais mis de l' control.CausesValidation = false pour le bouton annuler et de tous les parents du bouton annuler. Mais encore, c'était d'avoir des problèmes.

Il me semble que si l'utilisateur a été dans le milieu de l'édition d'un champ à l'aide de la validation et simplement décidé d'abandonner (en laissant le champ avec une entrée non valide), le bouton d'annulation de l'événement a été déclenché, mais la fenêtre n'est pas fermé.

Ceci a été corrigé par la suite dans le bouton annuler cliquez sur l'événement:

private void btnCancel_Click(object sender, EventArgs e)
{
    // Stop the validation of any controls so the form can close.
    AutoValidate = AutoValidate.Disable;
    Close();
}

19voto

womp Points 71924

Définissez la propriété CausesValidation du bouton Annuler sur false .

4voto

Brandon Points 35624

Réglez le CausesValidation bien à false .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X