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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    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 Expert
    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
    Par défaut
    les evenements close et closed ne te permettent pas de faire ce que tu veux ?

    @+

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    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 : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    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 confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    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 : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    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 confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    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 : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    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 confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    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 éprouvé
    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
    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 confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    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

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    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