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 de fermeture de Form mère avec fille existante


Sujet :

Windows Forms

  1. #1
    Membre habitué Avatar de Vonziz
    Inscrit en
    Décembre 2006
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 215
    Points : 131
    Points
    131
    Par défaut Problème de fermeture de Form mère avec fille existante
    Bonjour,

    Je vous expose mon problème simplement : Je lance mon application avec une Form A, cette Form ouvre une Form fille B.

    Je souhaiterais fermer la form A une fois la Form B affichée.

    Le problème étant qu'un FormA.Close() tue l'application et ne laisse pas vivre la Form B (étant donné que la B est fille de la A).

    Existe-t-il une possibilité de dire à mon thread principal que la Form B prend le relais lors de la fermeture de la Form A afin que l'application ne se ferme pas totalement?

    Merci d'avance pour vos réponse.

  2. #2
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Bijour.

    J'ai pas la solution mais le même problème a été posé y'a pas longtemps (j'dirais que le sujet doit se trouver en page 2 ou 3 ^^).

    Bonne recherche !

  3. #3
    Membre habitué Avatar de Vonziz
    Inscrit en
    Décembre 2006
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 215
    Points : 131
    Points
    131
    Par défaut
    Ok je vais regarder alors. Je suis désolé pour la redondance de sujet. ;-)

    Si vous avez la réponse, n'hésitez pas!

  4. #4
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Euh en fait j'suis allé jusqu'à la page 6 et j'ai pas trouvé lol

    Cependant regarde ça :
    http://www.developpez.net/forums/d68...rm-louverture/

    Peut-être que ça t'aidera...

    Sinon moi j'ai pas la solution Désolé...

    Bon courage !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Points : 369
    Points
    369
    Par défaut
    FormA.Hide()

    Tu n'auras pas de fermeture!

  6. #6
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    C'est la solution pas propre ça !

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Points : 369
    Points
    369
    Par défaut
    Sinon ce que je fais moi, je ne sais pas si c'est plus propre mais je créé une FormZ que est toujours caché!
    Et c'est elle qui gère l'ouverture et fermeture des autres forms, et centralise la communication entre elles grâce aux événements!

    Sinon juste une petite idée non testée : un Application.Run(new FormB())
    Et tu fermes l'autre après!
    LE problème serait la perte de tout tes objets qu'il faudrait passer en argument!

  8. #8
    Membre habitué Avatar de Vonziz
    Inscrit en
    Décembre 2006
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 215
    Points : 131
    Points
    131
    Par défaut
    Alors c'est effectivement la solution.

    Je créé un Thread via :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Thread myThread;
    myThread = new Thread(new ThreadStart(LaunchNewMenuForm));
    myThread.Start();
    Avec la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void LaunchNewMenuForm()
    {
         Application.Run(new MenuForm());
    }
    Le problème étant maintenant de closer ma première Form une fois que la seconde est chargée. Une idée?! :-)

    Merci à toi DarkSeiryu!

    La solution du Hide est TRES malpropre, si mon utilisateur réitère l'opération X fois, les données des X Forms reste en cache sur le Thread de l'application.

    Il faut apprendre à faire le ménage des données dans une application. :p

  9. #9
    Membre habitué Avatar de Vonziz
    Inscrit en
    Décembre 2006
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 215
    Points : 131
    Points
    131
    Par défaut
    A titre informatif, j'ai eu un problème sur mon Thread créé pour ma nouvelle Form, je ne pouvais pas ouvrir des composants "Windows" depuis mon Thread comme par exemple un FileBrowser.

    La solution est la suivante, il faut typer le Thread de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myThread.SetApartmentState(ApartmentState.STA);
    Le fait de le typer en STA le rend compatible avec les composants système Windows, je ne connais pas exactement les détails techniques sur ce typage mais ça marche nickel!

    Cordialement

  10. #10
    Membre habitué Avatar de Alt157
    Profil pro
    Inscrit en
    Février 2009
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 143
    Points : 146
    Points
    146
    Par défaut
    La solution du Hide est TRES malpropre, si mon utilisateur réitère l'opération X fois, les données des X Forms reste en cache sur le Thread de l'application.

    Il faut apprendre à faire le ménage des données dans une application. :p
    que ce ne soit pas propre je suis d'accord mais tu peux toujours passer ta formA dans le constructeur de ta formB comme cela tu peux la rappeler de B sans avoir a recréer une nouvelle fenêtre A... Je sens que je ne suis pas claire la... lol

    Un petit bout de code sera surement plus clair

    Dans FormA lors de l ouverture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    FormB maFormB = new FormB(this);
    maFormB.Show();
    Hide();
    et dans FormB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private FormA fen;
     
    public FormB(FormA pFen)
    {
     fen = pFen;
    }
     
    // Lorsqu 'il faut ouvrir a nouveau FormA
     
    fen.Show();
    Close();
    Après c'est sur que ce n'est pas SUPER propre mais c'est déjà moins sale que ce dont tu parlais au dessus
    Les filles sont comme les noms de domaines : les meilleures sont déjà prises.

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

Discussions similaires

  1. [Débutant] Problème de fermeture de form
    Par kitcarflo dans le forum VB.NET
    Réponses: 10
    Dernier message: 09/08/2012, 13h41
  2. Problème de fermeture de Form
    Par MalyAniolek dans le forum Windows Forms
    Réponses: 3
    Dernier message: 10/09/2009, 20h06
  3. Form mère et fille ?
    Par l.mnu dans le forum Windows Forms
    Réponses: 4
    Dernier message: 26/04/2007, 22h15
  4. [1.1]remplir un textbox de la form mère avec la form fille
    Par prem's dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/03/2007, 09h47
  5. Problème de fermeture de forme ShowModal
    Par keisha dans le forum Delphi
    Réponses: 5
    Dernier message: 12/09/2006, 19h33

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