IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#] bloqué la fermeture d'une fenetre


Sujet :

Windows Forms

  1. #1
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut [C#] bloqué la fermeture d'une fenetre
    Bonjour voilà j'ai un ptit soucis,
    voilà g une fenetre et je veux demander un message de validation pour fermer la fenêtre
    Mais même quand l'utilisateur clique sur non, la fenetre se ferme
    voilà le code:
    privatevoid fenetre_FormClosing(object sender, FormClosingEventArgs e)
    {
    DialogResult result = MessageBox.Show(this, "Etes-vous sûr de vouloir quitter ?", "Quitter ", MessageBoxButtons.YesNo);
    if (result == DialogResult.Yes)
    {
    Application.Exit();
    }
    else
    {

    }

    }

  2. #2
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    privatevoid fenetre_FormClosing(object sender, FormClosingEventArgs e)
    {
    DialogResult result = MessageBox.Show(this, "Etes-vous sûr de vouloir quitter ?", "Quitter ", MessageBoxButtons.YesNo);
    if (result == DialogResult.No)
    {
    e.Cancel = true; 
    }
    }
    
    @+

  3. #3
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut
    merci beaucoup SLE mais en fait ce que j'ai oublier de dire c'est que la fenetre fait aprtie d'une application et il faut que lorsqu'on la ferme l'application se ferme
    donc j'ai mis ton code et dans else j'ai mis
    application.exit();
    mais là il y a un problème , même quand je clic sur no, la fenetre se ferme mais pas l'application, je crois que le problème viens du fait que la fenetre se ferme d'abord, puis envoie un message
    esque c possible?
    merci d'avance

  4. #4
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    Bizarre...

    Pourtant je ne vois pas comment faire d'autre que pour annuler la fermeture...

  5. #5
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut
    oue ben c'est bizarre, mais esque il existe un évenement pour quand on clic sur la croix d'en haut à part fenetre_formclossing?
    en tout cas merci de ton aide

  6. #6
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    A part fenetre_Closing(...) du .NET 1.1 je ne crois pas.

  7. #7
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut
    ok ben merci de ton aide
    je cherche et quand je trouve je donne la solution
    @+

  8. #8
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut
    bon ben sa marche toujours pas, quelqu'un aurait une nouvelle idée?

  9. #9
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    T'aurais pas mis du code dans d'autres events de la form comme fenetre.Close() ?

  10. #10
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut
    non pas du tout mais là g testé un nouveau truc mais sa donne le meme effet:
    if(MessageBox.Show(this, "Etes-vous sûr de vouloir quitter ?", "Quitter ", MessageBoxButtons.YesNo) == DialogResult.Yes)
    {
    Application.Exit();
    }
    else
    {
    e.Cancel =
    true;

    }

  11. #11
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    Ben chez moi ça fonctionne très bien...
    La seule différence que j'ai avec ton code c'est que je ne définis pas le OWNER dans le MessageBox.Show().

    => essaie en enlevant le "this," dans ta fonction show() ???

    @+

  12. #12
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut
    non sa change rien, bon je vais bien réexpliqué ce qui se passe:
    J'ai une fenetre mêre à partir de laquelle j'ouvre une fenetre fille.
    Ce que je veux c'est que lorsqu'e l'on clic sur la croix de la fenetre fille soi je ne quitte pas l'application et que la fenetre fille ne se ferme pas du coup , sois que toute l'application se ferme sans me redemander le message arrvié autour de la fenetre mere, car pour l'instant c'est le cas, du coup j'ai la messagebox qui s'ouvre 3 fois (pourtant suivant ma logique elle devrait s'afficher que 2 fois mais quand c'est au tour de la fenetre mere c'est 2 fois)
    voilà
    j'espère que c'est un peu plus clair

  13. #13
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    J'ai encore jamais vu d'application qui se ferme quand on ferme une de ses fenêtres filles... Nouveau concept ?

  14. #14
    Membre régulier Avatar de netomin
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 81
    Points : 102
    Points
    102
    Par défaut
    Si tu cherche "closing" dans l'aide de C# sur Visual Studio tu trouve cette explication, peut être c'est ton cas:


    ATTENTION Les événements Form.Closed et Form.Closing ne sont pas déclenchés lorsque la méthode Application.Exit est appelée pour quitter l'application. Si l'un de ces événements comporte du code de validation devant être exécuté, vous devez appeler la méthode Form.Close pour chaque formulaire ouvert individuellement avant d'appeler la méthode Exit.
    Si le formulaire est un formulaire parent MDI, les événements Closing de tous les formulaires enfants MDI sont déclenchés avant que l'événement Closing du formulaire parent MDI le soit. En outre, les événements Closed de tous les formulaires enfants MDI sont déclenchés avant que l'événement Closed du formulaire parent MDI le soit. L'annulation de l'événement Closing d'un formulaire enfant MDI n'empêche pas l'événement Closing du formulaire parent MDI de se déclencher. Cependant, l'annulation de l'événement entraîne l'affectation de false à la propriété System.Windows.Forms.ClosingEventArgs.Cancel du System.Windows.Forms.ClosingEventArgs passé en tant que paramètre au formulaire parent. Pour forcer la fermeture de tous les formulaires parents et enfants MDI, affectez System.Windows.Forms.ClosingEventArgs.Cancel à la propriété false dans le formulaire parent MDI.
    à +
    Il y a toujours une réponse, il suffit de la trouver.

  15. #15
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut
    ben pour fermer à partir d'une fenetre fille
    dans fenetrefille_formclosing tu met application.exit();
    essaye tu verra

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Citation Envoyé par SLE
    J'ai encore jamais vu d'application qui se ferme quand on ferme une de ses fenêtres filles... Nouveau concept ?
    Entièrement d'accord. C'est pas bien de faire ça, aucun utilisateur ne va s'y retrouver...

    Ceci dit, il est possible que l'appel de Application.Exit() entraine une réentrance dans Form.Closing() de la fenêtre fille en question.
    Si le défaut vient de là, il faudrait utiliser BeginInvoke pour que Exit soit appelé après la fin du handler Closing.
    edit : netomin vient de nous dire que c'est pas ça
    On ne peut pas faire boire un âne qui n'a pas soif.

  17. #17
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    Oui, mais il a utilisé l'event FormClosing() => .NET 2.0
    Cette méthode est appelée par Application.Exit, contrairement à Closing() du .NET 1.1 (méthode obsolète suivant MSDN)

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Exit déclenche les événements suivants et exécute les opérations conditionnelles associées :

    Un événement FormClosing est déclenché pour chaque formulaire représenté par la propriété OpenForms. Il peut être annulé en affectant true à la propriété Cancel de leur paramètre FormClosingEventArgs.

    Si un ou plusieurs gestionnaires annulent l'événement, Exit est retourné sans action supplémentaire. Sinon, un événement FormClosed est déclenché pour chaque formulaire ouvert, et les boucles et les formulaires de messages en cours d'exécution sont fermés.

    Remarque
    Dans les versions antérieures au NET Framework version 2.0, la méthode Exit ne déclenchait pas les événements équivalents pour la classe Form (Closed et Closing). Pour forcer ces événements, il fallait appeler explicitement la méthode Close pour chaque formulaire ouvert avant d'appeler la méthode Exit.
    C'est peut être bien un problème de réentrance finalement.
    On ne peut pas faire boire un âne qui n'a pas soif.

  19. #19
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    Citation Envoyé par padodanle51
    ben pour fermer à partir d'une fenetre fille
    dans fenetrefille_formclosing tu met application.exit();
    essaye tu verra
    Ben oui je sais que ça fonctionne, mais c'est contraire à tout ce qui se fait habituellement !!! Il y a des principes et convensions de base à respecter quand tu crées une appli !

  20. #20
    Membre habitué Avatar de Sodangbe
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    171
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 171
    Points : 145
    Points
    145
    Par défaut
    Salut
    Je dois avouer que tu as fournie une explication un peu floue de ton probleme mais d'après ce que j'ai compris essaye ceci sur le clic du button fermer de ton formulaire enfant.

    privatevoid button1_Click(object sender, EventArgs e)
    {
    DialogResult result;
    result =
    MessageBox.Show("Voulez-vous quittez l'application?", "Logipark manager",
    MessageBoxButtons.YesNo, MessageBoxIcon.Question);
    if (result == DialogResult.Yes)
    Application.Exit();
    }

    je ne sais pas pourquoi vous tenez tant aux instructions :

    else
    {
    e.Cancel =
    true;

    }


    Vous pouvez m'éclaircir sur cette remarque?



+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [debutant] Pb fermeture d une fenetre
    Par yup dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 21/06/2006, 17h48
  2. Fermeture d'une fenetre
    Par gamerome dans le forum GLUT
    Réponses: 1
    Dernier message: 20/12/2005, 10h23
  3. [ApplicationFrame][jfreechart]fermeture d'une fenetre
    Par cmoa59 dans le forum Agents de placement/Fenêtres
    Réponses: 32
    Dernier message: 15/06/2005, 10h41
  4. evenement a la fermeture d' une fenetre
    Par Sh. dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/03/2005, 13h30
  5. Detecter la fermeture d'une fenetre MsDos
    Par Akta3d dans le forum C++Builder
    Réponses: 2
    Dernier message: 13/07/2004, 16h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo