DialogResult et cancel [Résolu]

babe59 189 Messages postés vendredi 28 mai 2004Date d'inscription 27 novembre 2015 Dernière intervention - 9 févr. 2007 à 14:45 - Dernière réponse : babe59 189 Messages postés vendredi 28 mai 2004Date d'inscription 27 novembre 2015 Dernière intervention
- 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 

7 réponses

Répondre au sujet
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 9 févr. 2007 à 23:46
+3
Utile
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
*/
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_coq
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 9 févr. 2007 à 15:08
0
Utile
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
babe59 189 Messages postés vendredi 28 mai 2004Date d'inscription 27 novembre 2015 Dernière intervention - 9 févr. 2007 à 15:31
0
Utile
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
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 9 févr. 2007 à 16:04
0
Utile
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
babe59 189 Messages postés vendredi 28 mai 2004Date d'inscription 27 novembre 2015 Dernière intervention - 9 févr. 2007 à 16:45
0
Utile
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
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 9 févr. 2007 à 20:07
0
Utile
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
babe59 189 Messages postés vendredi 28 mai 2004Date d'inscription 27 novembre 2015 Dernière intervention - 10 févr. 2007 à 09:13
0
Utile
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.