DialogResult et cancel

[Résolu]
Signaler
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015
-
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015
-
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

7 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
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
*/
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
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]
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015

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
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
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]
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015

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
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
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]
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015

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