DialogResult et cancel [Résolu]

Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Dernière intervention
27 novembre 2015
- - Dernière réponse : babe59
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Dernière intervention
27 novembre 2015
- 10 févr. 2007 à 09:13
Bonjour,

j'ai défini la propriété DialogResult à OK pour un bouton et lorsque le click se déclenche sur ce bouton, je vérifie certaines choses et affiche un message d'erreur en cas d'anomalie or le fait que dialogResult est positionné la form se ferme malgré le return

private
void btnOK_Click(
object sender,
EventArgs e)
{

   if (lstData.SelectedItems.Count == 0)
   {

      Error.Show(
"Blabla");

      return;
   }
...

}

n'y a t il donc pas un moyen d'annuler la fermeture de la form. J'ai essayé de caster avec "e" avec "CancelEventArgs" mais cela ne fonctionne pas ...
Je n'ai pas très envie de vérifier dans le FormClosing car cela m'obligerait à positionner une variable dans mon btnOk_Click...

DT
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
88
3
Merci
Salut,

Ou alors tu passes complètement en manuel : tu ne te sert pas de la propriété DialogResult du bouton, tu affectes la bonne valeur à Form.DialogResult manuellement si la validation a réussit et tu fermes le formulaire.

/*
coq
MVP Visual C#
CoqBlog
*/

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_coq
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
54
0
Merci
Salut,

Le DialogResult ne fonctionne que si tu ouvres ta fenêtre avec ShowDialog.

ex:

using ( MaForm f = new MaForm() ) {
   if ( f.ShowDialog() == DialogResult.OK ) {
      // bla bla bla
   }
}

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Dernière intervention
27 novembre 2015
0
Merci
Je suis d'accord,
mais mon souci est que j'aimerai annuler dans le click du bouton OK la fermeture de la form si certaines conditions ne sont pas respectées. Mon problème n'est pas à l'appel de la form mais à la validation de celle-ci.

Le bout de code que j'ai donné se trouve dans le bouton qui à la propriété DialogResult à OK

DT
Commenter la réponse de babe59
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
54
0
Merci
oui... mais ça il faut le faire à l'intérieur de la form elle-meme.

Il faut que tu interceptes l'évènement FormClosing... là tu auras dans FormClosingEventArgs une propriétés Cancel.

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Dernière intervention
27 novembre 2015
0
Merci
Désolé d'insister mais comme je le précise dans mon 1er post, je n'ai pas envie de positionner une variable dans mon btnOk_Click que je devrai gérer et traiter dans mon FormClosing. Ne puis-je pas directement dans le btnOk_click cancler la sortie de ma form
En clair : Faire un cancel dans btnOk_click.

DT
Commenter la réponse de babe59
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
54
0
Merci
car à ce moment, il est trop tot !

L'évènement FormClosing te permet de le faire tout simplement !

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Commenter la réponse de sebmafate
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Dernière intervention
27 novembre 2015
0
Merci
Merci Coq (& Sébastien),

Ta réponse me convient parfaitement, en plus actuellement je n'avais pas de this.Close() dans mon bouton OK et cela me "genais" un peu.

Donc la solution "manuelle" me convient tout à fait

Merci
DT
Commenter la réponse de babe59

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.