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 :

MDIChild et event Closing


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 29
    Points : 25
    Points
    25
    Par défaut MDIChild et event Closing
    Bonjour,

    J'ai fait une application en MDI avec plusieurs forms en MDIChild, sur chacune des mes forms MDIChild j'ai ajouté l'event Closing ainsi que sur ma form principale.

    Sur ma form principale dans Form1_Closing j'ai ajouter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    e.Cancel=true;
    return;
    Afin d'annuler la fermeture, cela annule bien la fermeture de la form principale, mais mon soucis, c'est que la fermeture de mes MDIChild est quand même appeler.

    Après plusieurs test il apparait que la fermeture de mes MDIChild est appeler avant même l'event Closing de ma form principale, ce que je trouve d'ailleurs étonnant.


    Est-ce normal que les event Closing des MDIChild soit appeler avant même celui de la form principale alors que c'est cette dernière que je tente de fermer ?

    Et surtout n'y a t'il pas une solution pour que les events Closing des MDIChild soit appeler seulement après l'event Closing de ma form principale ? Et surtout qu'il ne soit pas appeler dans le cas ou je fait un e.Cancel=true; dans l'event closing de la form principale.


    Merci d'avance.

  2. #2
    Membre régulier
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 71
    Points : 110
    Points
    110
    Par défaut
    Salut,

    Quand on ferme la fenêtre principale, cette dernière va fermer ses fenêtres enfants avant toute choses.
    Quand tu ferme la porte de ta maison à clé, tu fermes toutes tes fenêtre avant non ? C'est la même chose.

    Dans le Closing de ta fenetre principale, conditionne le e.Cancel=true par un if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (this.MdiChildren.Length > 0)
    {
        e.Cancel = true;
    }
    du coup, tu peux fermer cette fenêtre si les autres sont fermées.

    Si tu peux expliquer un peu plus ce que tu recherche à faire, je pourrais t'aider.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    En fait je souhaite pouvoir annuler (dans certaine conditions) la fermeture de l'application parent, et donc des MDIChild, mais le soucis, c'est que justement l'event Closing des Child est appeller AVANT l'event Closing de ma form parent.

    Donc même si je fait un e.Cancel=true; dans le Closing du parent, les child aurons déjà été fermer.

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 41
    Points : 59
    Points
    59
    Par défaut
    Bonjour.

    Dans tes fenêtres enfants, tu peux t'abonné à la méthode FormClosing

    L'objet FormClosingEventArgs possède une propriété CloseReason qui permet d'indiquer comment la fenêtre est en train d'être fermée.
    Si c'est la fenêtre parent qui est fermée, tu devrais récupérer la valeur CloseReason.MdiFormClosing.

    Ainsi même si c'est toujours l'évènement des fenêtres enfants qui est déclenché en premier, tu dois pouvoir le gérer grâce à ce paramètre sachant que l'objet à aussi une propriété Cancel et qui si elle est positionnée à True, la fenêtre enfant ne peut être fermée donc la fenêtre parent non plus.

    En espérant que cela peut t'aider.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Merci c'est exactement le genre de solution que je cherchais.

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

Discussions similaires

  1. [GWT2.3] Capture de l'event : close the window
    Par valkeke dans le forum GWT et Vaadin
    Réponses: 9
    Dernier message: 02/12/2012, 12h19
  2. Problème event Closing en mode OOB
    Par CRNice dans le forum Silverlight
    Réponses: 4
    Dernier message: 15/07/2010, 15h48
  3. Event On Close sur un User Control
    Par Contrec dans le forum C#
    Réponses: 4
    Dernier message: 05/09/2007, 18h27
  4. WxFrame Close Event
    Par cookieParis dans le forum wxWidgets
    Réponses: 1
    Dernier message: 31/05/2007, 11h56
  5. [VB.NET] Recuperer un Event d'une MDIChild Vers MDIParent
    Par XnoTonio dans le forum Windows Forms
    Réponses: 1
    Dernier message: 10/05/2006, 16h49

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