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#] Détecter sortie forme par la fenêtre


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Points : 94
    Points
    94
    Par défaut [RESOLU][C#] Détecter sortie forme par la fenêtre
    Bonjour,

    Voilà... J'ai un petit problème, il faut absolument que j'arrive à détecter lorsque une forme est en train de se fermer si l'utilisateur l'a fermée en cliquant sur la croix en haut à droite de la fenêtre. Le problème c'est que je n'ai rien vu dans les évènements et n'ai rien trouvé sur le net.

    Please Help..... ;-)

    Merci!!!

  2. #2
    Membre expérimenté
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Points : 1 696
    Points
    1 696
    Par défaut
    les evenements close et closed ne te permettent pas de faire ce que tu veux ?

    @+
    Someday I will be the most powerful Jedi !

    Freddyboy - Blog

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Points : 94
    Points
    94
    Par défaut
    Eh bien non, car dans les EventArgs, je n'ai pas le moyen de savoir comment la forme a été fermée...

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Dans l'event Closing de ta Form, tu peux mettre un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    using (MsgBox msg = new MsgBox("Etes-vous sur de vouloir quitter l'application ?", "Confirmation de fermeture", MessageBoxButtons.YesNo))
    			{
    				if (msg.ShowDialog() == DialogResult.OK)
    				{
    					Application.Exit();
    				}
    				else
    				{
    					e.Cancel = true;
    				}
    			}
    C'est tiré d'une de mes applis mais tu va comprendre vire

    Le .Cancel = true permet d'annuler la fermeture de la fenetre


    A+

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Points : 94
    Points
    94
    Par défaut
    Je comprend bien, mais il ne faut aucune interaction avec l'utilisateur, il faut vraiement que je détecte cela depuis la forme et pas autrement. Mais merci quand-même!

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par le_marsupilami_2001
    Je comprend bien, mais il ne faut aucune interaction avec l'utilisateur, il faut vraiement que je détecte cela depuis la forme et pas autrement. Mais merci quand-même!
    Il n'y a aucune intéraction avec l'utilisateur.

    Je t'ai juste montrer un exemple.

    Tout ce que tu dois mettre doit se passer dans l'event Closing


    A+

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Points : 94
    Points
    94
    Par défaut
    il faut absolument que j'arrive à détecter lorsque une forme est en train de se fermer si l'utilisateur l'a fermée en cliquant sur la croix en haut à droite de la fenêtre.
    Je crois qu'on est pas en train de parler de la même chose non?

  8. #8
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par le_marsupilami_2001
    il faut absolument que j'arrive à détecter lorsque une forme est en train de se fermer si l'utilisateur l'a fermée en cliquant sur la croix en haut à droite de la fenêtre.
    Je crois qu'on est pas en train de parler de la même chose non?

    Tu veux savoir si l'utilisateur à cliquer sur la croix en haut à droite, c'est bien cela :

    Dans ce cas, tu vas dans l'event closing de ta form: à ce moment, tu sais que l'utilsiateur à cliquer sur cette croix (ou à fermer la fenetre par un menu ou autre).

    Il te suffit alors de mettre:

    e.Cancel = true;

    et là, tu auras toujours ta form, mais tu sais qu'a partir de là, ton utilisateur à demander la fermeture de la form.....

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Points : 94
    Points
    94
    Par défaut
    Oui je suis bien d'accors avec tol, mais je ne sais pas si mon utilisateur a cliqué sur la croix ou si il y fermé la forme depuis ailleurs, y compris à cause d'un bug par exemple. Alors que moi je veux pas sqavoir si il a fermé la forme, mais bel et bien si il a cliqué sur la croix pour fermer la forme.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 83
    Points : 107
    Points
    107
    Par défaut
    Bonjour,

    Pour récupérer la fermeture du Form par la fermeture du menu systeme,
    tu dois sous-classer ton form, récupérer le message WM_SYSCOMMAND
    (message envoyé lorqu'une commande du menu système a été sélectionnée)
    et tester le paramétre wParam de ton message qui doit correspondre
    à la constante SC_CLOSE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    protected override void WndProc(ref Message m)
    {
     
    	const int SC_CLOSE = 61536;
    	const int WM_SYSCOMMAND = 0x0112;
     
    	if(m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE)
    	{
    		MessageBox.Show("Fermeture systeme");
    	}
     
    	base.WndProc(ref m);
    }

  11. #11
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Salut voilà un petit test qui devrait te satisfaire
    l'astuce était qu'il fallait savoir que l'évenemnt concerné est attaché à l'objet Application et non à Form
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Application.ApplicationExit  += new EventHandler(Application_Exit);
    //...
    private static void Application_Exit(object sender, System.EventArgs e)
     {
       MessageBox.Show("au revoir");
     }
    private void button1_Click(object sender, System.EventArgs e)
     {
        Application.Exit();
     }
    // ici seule la fermeture intempestative de la fenêtre declenche le messagebox
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Points : 94
    Points
    94
    Par défaut
    Merci, ça marche du tonerre et c'est exactement ce que je voulais savoir.

    En effet il fallait le savoir que l'évènement n'était pas lié à la fenêtre, mais à l'application!

    Un grand merci à toi pour ce coup de pouce!!!

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

Discussions similaires

  1. Comment détecter la fermeture d'une fenêtre par la croix?
    Par man_coef dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/06/2008, 16h34
  2. Reconnaissance de forme par réseau neuronal
    Par Rémiz dans le forum Méthodes prédictives
    Réponses: 34
    Dernier message: 28/05/2007, 16h41
  3. Réponses: 4
    Dernier message: 04/10/2005, 00h07
  4. comment interdire la validation d'un form par "Entrée&q
    Par taillooo dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 14/09/2005, 17h33
  5. Réponses: 7
    Dernier message: 02/02/2005, 20h32

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