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#]Intercepter le clic sur la croix (quitter)


Sujet :

Windows Forms

  1. #1
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut [C#]Intercepter le clic sur la croix (quitter)
    Bonjour à tous,

    je voudrais pouvoir afficher une messagebox du style "êtes-vous bien sûr de vouloir quitter ma génialissime application? En êtes-vous bien sûr? etc." quand l'utilisateur va cliquer sur la petite croix en haut à doite. Mais voilà, je ne sais comment faire et la littérature semble occulter cette question.
    Une idée?
    merci.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  2. #2
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Salut

    il faut intercepter l'evenement Application.ApplicationExit
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  3. #3
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 61
    Points : 43
    Points
    43
    Par défaut
    J'ai déjà vu cette question sur le forum. Regarde ce sujet. Ca devrait te convenir.

    http://www.developpez.net/forums/viewtopic.php?t=478691

  4. #4
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par guillaume16
    J'ai déjà vu cette question sur le forum. Regarde ce sujet. Ca devrait te convenir.
    http://www.developpez.net/forums/viewtopic.php?t=478691
    Je travaille en C#, non en VB.

    Citation Envoyé par dev01
    il faut intercepter l'evenement Application.ApplicationExit
    Comment fait-on pour iplémenter ça?
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  5. #5
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    comme n'importe quel autre evenement


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    Application.ApplicationExit += new System.EventHandler(MaFonctionEnCasDeFermeture);
     
    private void MaFonctionEnCasDeFermeture(object o, sender e)
    {
     
    }
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  6. #6
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Merci dev01, ça marche.
    Cependant, il y a quelque chose que je ne comprends pas (je suis vraiment nul en c#):
    J'ai implémenté le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    [...]
    Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
    [...]
     
    void Application_ApplicationExit(object sender, EventArgs e)
    {
          DialogResult dr = MessageBox.Show("Voulez-vous vraiment quitter l'application",
                                          "Confirmation",
                                          MessageBoxButtons.YesNo,
                                          MessageBoxIcon.Warning);
     
          if (dr == DialogResult.No)
          {
              Application.Exit();
          }
    }
    Mais ça ne fonctionne pas car l'application se ferme dans tous les cas, quelque soit le choix de l'utilisateur. Il me faut donc pouvoir annuler l'exécution de ApplicationExit si l'utilisateur clique sur 'non'. Je ne vois pas comment faire
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  7. #7
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Pour annuler le traitement réalisé, dans ce cas la fermeture :
    Si je ne m'abuse ^^
    Pas de questions techniques par MP

  8. #8
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Pour e, je n'ai que les attributs suivants:
    e.Equals;
    e.GetHashCode;
    e.GetType;
    e.ToString.

    mais point de Handled
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  9. #9
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Ok, j'ai trouvé une autre solution, en surchargeant la méthode OnClosing:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     protected override void OnClosing(CancelEventArgs e)
            {
                DialogResult dr = MessageBox.Show("Voulez-vous vraiment quitter l'application",
                                               "Confirmation",
                                               MessageBoxButtons.YesNo,
                                               MessageBoxIcon.Warning);
     
                if (dr == DialogResult.No)
                {
                    e.Cancel = true;
                }
                else
                {
                    base.OnClosing(e);
                }
            }
    merci à tous
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Interception du clic sur la croix lorsque on quitte.
    Par BoyzInDaProject dans le forum MFC
    Réponses: 3
    Dernier message: 04/06/2007, 16h16
  2. Réponses: 2
    Dernier message: 09/02/2007, 09h37
  3. [JFrame]System.exit() lors du clic sur la croix
    Par cyrill.gremaud dans le forum Agents de placement/Fenêtres
    Réponses: 21
    Dernier message: 17/08/2006, 10h48
  4. Gestion du clic sur la croix de fermeture !
    Par Atomikx dans le forum MFC
    Réponses: 3
    Dernier message: 15/11/2005, 11h47
  5. [MFC] Intercepter le clic sur Minimze Box
    Par March' dans le forum MFC
    Réponses: 2
    Dernier message: 09/07/2004, 16h15

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