none
Fermeture d'une Forms RRS feed

  • Question

  • Bonjour,

    Je suis actuellement entrain de développer une appli en winforms c#.

    Ma question n'est pas très compliqué.

    Voila ma forms principale (FormA) appel une autre forms (FormB),

    Sur la FormB, je peux fermer la Forms de trois maniéré différente avec des boutons et la croix.
    Je voudrais après fermeture récupérer dans la FormA quel a ete le bouton qui la ferme.

     

    je vous remercie pour votre aide....

    vendredi 8 avril 2011 17:07

Réponses

  • Bonjour,

    Que vous fermiez votre écran par un bouton ou par la croix , vous pouvez utiliser l'évènement FormIsClosing , ou utiliser une variable publique définie dans la classe gérant vôtre écran.

    Si vous définissez cette variable comme

    public Int32 ModeSortie = -1;

    dans la méthode que vous utilisez pour traiter le clic sur le bouton de sortie, vous ajoutez juste avant le ligne de code this.Close()

    ModeSortie = 1

    dans le délégué traitant l'évènement FormIsClosing vous mettez un code comme

    if ( ModeSortie == -1 ) // Sortie par la croix car si sortie par le bouton ModeSortie vaut 1
    {
       ModeSortie = 0
    }
    

    ModeSortie vaut -1 ==> aucune tentative de sortie de l'écran

    ModeSortie = 1 ==> sortie par le bouton

    ModeSortie = 0 ==> sortie par la croix

    Je suppose que vous appelez votre écran ( Form2 par exemple ) depuis un autre écran appelé par exemple Form1 par une séquence de code comme

    Form myform2 = new Form1();
    DialogResult p_ret = myform2.ShowDialog();
    // test de la variable ModeSortie de myform2
    if ( myform2.ModeSortie == 0 )
    {
       // code pour le cas sortie par la croix
    }
    

    vous pouvez même vous passer de ModeSortie en jouant sur le DialogResult ( vous pouvez laisser ModeSortie comme private au lieu de public )

    dans le délégué pour l'évènement FormIsClosing :

    if ( ModeSortie == 0 )
    {
       this.DialogResult = DialogResult.Cancel;
    }
    else
    {
       this.DialogResult = DialogResult.OK;
    }
    

    Cette dernière solution me semble la plus propre.

    N'hésitez pas à poster à nouveau pour plus d'aide ou explication

    Bonne journée

    PS : un lien vers le délégué :

    http://msdn.microsoft.com/fr-fr/library/system.windows.forms.formclosingeventhandler(v=VS.90).aspx

    http://msdn.microsoft.com/fr-fr/library/system.windows.forms.form.formclosing(v=VS.90).aspx


    Mark Post as helpful if it provides any help.Otherwise,leave it as it is.
    samedi 9 avril 2011 11:33