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

C# Discussion :

quel évènement ? fermeture form enfant


Sujet :

C#

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut quel évènement ? fermeture form enfant
    bonjour voila j'ai une méthode a exécuter avant la fermeture d'une fenetre enfant. Cette fenetre est dans un MDI.

    je crois que l'évènement est FormClosingEventArgs mais je ne sais pas comment faire.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Par défaut
    Bonjour,
    ce que tu indiques n'est pas un évenement mais correspond une classe d'arguments associés à un évenement.
    L'évenement que tu recherches est "formClosing" et non pas "FormClosingEventArgs".
    Pour associer du code à cette évenement procède de cette manière:

    nomFormulaire.FormClosing += puis appuie sur tab deux fois visual studio va te générer la fonction avec la bonne signature (tu retrouveras les arguments FormClosingEventArgs) et dans cette fonction tu pourras mettre le code qui s'exécutera à la fermeture de ton formulaire.
    Si tu veux que le code s'execute APRES et non AVANT la fermeture de ta fenetre utilise l'évenement FormClosed.

    En espérant t'avoir aider

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    oui, merci pour ton astuce de la tabulation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            private void form_client_FormClosing(object sender, FormClosingEventArgs e)
            {
                //------
                MessageBox.Show("test");
                //------
            }
    form_client = formulaire enfant dans form_general (parent)

    j'ai copié ce code de form_client vers form_general mais il ne se passe rien.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Par défaut
    Je ne comprends pas trop; ce code appartient à la classe du formulaire client, il doit rester dedans. Peut tu nous montrer ton code?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    disons que j'ai un form_general qui possède un menu, quand je clique sur ce menu je choisi une fenetre a ouvrir dans mon MDI (form_general)

    exemple form_client s'ouvre dans form_general quand il est ouvert, à sa fermeture (avant) j'aimerai faire exécuter une méthode comme j'ai dis plus haut.

    Je me suis dit pourquoi pas dire a cette fenêtre si tu te ferme alors exécute ma méthode.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    ok j'ai compris comment exécuter ma méthode qui se trouve dans un autre form ?

    j'aimerai l'exécuter dans form_client mais cette méthode se trouve dans form_general.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Par défaut
    Normalement si tu ajoute dans le constructeur le code que je t'ai donné et après avoir écrit le code de ta fonction (en l'occurence l'appel à messageBox) c'est bon, tu n'as plus rien à faire; lorsque ton formulaire client se fermera tu auras ton message. Il ne faut pas que tu déplace le code de ta fonction

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    dans form_client je peux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            private void form_protection_FormClosing(object sender, FormClosingEventArgs e)
            {
                MessageBox.Show("test");
     
                form_generale formulaire = new form_generale();
                formulaire.info(true);
            }
    info étant ma méthode public dans form_general pourquoi sa change pas les paramètres ?

    dans info, sa doit changer des propriétés de form_general.

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Par défaut
    Si je comprends bien (ou alors je me trompe ) dans ton form_generale tu as un MDIChild formClient , donc dans la fonction form_protection_FormClosing tu n'as pas besoin de récréer un form_generale il faut que tu récupère la référence sur le form_generale que tu as déjà créé . Pour cela tu as la propriété Parent, ou MDIParent , je ne sais plus, grâce à celle-ci tu vas pouvoir recuperer ton form_generale , il faut que tu le "cast" en form_generale

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((form_generale )this.Parent).info(true);
    au passage quelque conseils de notation: evite les underscore dans le nom des classes et met des majuscules; préfére FormGeneral (ce n'est que mon avis) et pour les fonctions, commence aussi par une majuscule, en essayant d'être explicite:

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    la solution étant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((form_generale)MdiParent).info(true);
    Franchement je te remercie par ton aide et tes conseils il est vrai que je suis trop habitué aux autres langages (php, jquery, javascript, css et autres) et que je suis novice en c#. (il y a des nouveaux cours sur le SDZ, j'ai repris la lecture...)

    @ bientôt

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

Discussions similaires

  1. [Débutant] Comment générer un événement de fermeture de la Form enfant
    Par Dudule70 dans le forum C#
    Réponses: 2
    Dernier message: 22/05/2014, 09h35
  2. [Fermeture de fenêtre]Quel évènement choisir?
    Par 1tox dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/05/2007, 10h22
  3. Quel événement pour clic sur un sous-form ?
    Par AndréPe dans le forum IHM
    Réponses: 10
    Dernier message: 19/03/2007, 18h11
  4. récupérer l'événement "fermeture par la croix" de
    Par hamurielle dans le forum Windows Forms
    Réponses: 4
    Dernier message: 08/04/2005, 11h35
  5. Quel évènement sur le redimensionnement ?
    Par Yoh dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 01/07/2004, 14h05

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