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 :

Problème avec 2 forms


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
    Octobre 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 109
    Par défaut Problème avec 2 forms
    Bonjour à tous!

    J'ai un petit problème avec mon projet qui utilise 2 forms.
    La première me sert de fenêtre d'initialisation où l'utilisateur règle plusieurs options. Ensuite celui-ci clique sur un bouton de validation et la deuxième form est lançée.
    Je souhaiterai que la première form soit détruite et qu'il n'y ai plus que la deuxième.
    Cependant je n'y suis pas arrivé et j'ai fait un truc un peu batard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    //Dans Form1
    private void buttonValid_Click(object sender, EventArgs e)
    {
                    Form2 maForm2 = new Form2();
                    maForm2.Owner = this;
                    maForm2.Show();
                    //Solution a la con : je cache la première fenêtre
                    this.Hide();
    }
    //Etant donné que la form1 est hide cette méthode est appelé quand la form2 est fermé
    public void FermetureFromForm2()
    {
                this.Close();
    }
     
     
    //Dans form2
    private void Form2_FormClosed(object sender, FormClosedEventArgs e)
    {
                Form1 maform1 = (Form1)this.Owner;
                maform1.FermetureFromForm2();
    }
    Quand je ferme la deuxième fenêtre j'ai le droit a un beau plantage! Cependant je n'ai pas d'autre solution...
    Si quelqu'un peu me proposer une solution plus propre je suis preneur!
    Merci d'avance.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Salut,

    dans le callback du click, si tu remplace this.Hide() par Close, ca ne devrait pas planter et ca devrait faire ce que tu souhaites. Quel est le probleme quand tu fermes la premiere fenetre ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 109
    Par défaut
    Merci pour ta réponse!
    Lorsque je change this.Hide par this.Close j'ai une erreur à la ligne:
    this.Close(); dans FermetureFromForm2()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Une exception non gérée du type 'System.StackOverflowException' s'est produite dans System.Windows.Forms.dll
    Ce qui est bisard c'est qu'il lance directe FermetureFromForm2 alors que je ne ferme pas la deuxième form!

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Regarde ta pile d'appel quand tu recuperes l'exception, et regardes ce qui te fait exploser la pile. Ca sent l'appel recrusif.

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

    Informations forums :
    Inscription : Février 2006
    Messages : 46
    Par défaut
    Bonjour,

    Il est normal que quand tu changes this.Hide par this.Close tu ais une erreur à la ligne:
    this.Close(); dans FermetureFromForm2()

    En effet tu instancie ta form2 au sein de ta form1 donc ta form2 appartient à ta form1 si tu close ta form1, tu close par la force des chose ta form2.

    tu as une astuce qui consiste à laisser ton form1.Hide();

    puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    //Dans form2
    private void Form2_FormClosed(object sender, FormClosedEventArgs e)
    {
                Application.exit();
    }
    C'est un peu crado mais sans passer par une classe qui contiendrait tout les paramètres définis dans ta form1 puis accessible à ta form2 je vois rien d'autre.

    Bigy

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 240
    Par défaut
    Il semble que ta Form principale soit la Form 2 ...
    Pourquoi ne la mets tu pas en Form 1 ? (et ta Form servant a paramêtrer l'appli en Form 2)
    Au démarrage, active immédiatement ta Form 2 et basarde la une fois pour toute une fois utilisée ...

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

Discussions similaires

  1. problème avec <html:form>
    Par s.mustapha86 dans le forum Struts 1
    Réponses: 22
    Dernier message: 14/07/2008, 11h57
  2. Problème avec la Form Principale
    Par zagmoh dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/06/2007, 23h15
  3. Problème avec document.forms
    Par Kernald dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/02/2007, 12h15
  4. Problème avec HTML::Form
    Par Woufeil dans le forum Web
    Réponses: 1
    Dernier message: 05/06/2006, 13h59
  5. problème avec les forms 6i!
    Par JauB dans le forum Oracle
    Réponses: 2
    Dernier message: 07/11/2005, 08h33

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