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


Sujet :

Windows Forms

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    1
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Problème de fermeture de Form
    Bonjour,

    Alors voila, j'ai un petit soucis tout a fait étrange...

    J'ai une application Windows Form MDI qui contient donc quelques Forms, et pour ne pas permettre à l'utilisateur d'ouvrir deux fois la même fenêtre, j'utilise ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If ClientForm Is Nothing Then
         ClientForm = New ListeClientsForm
         ClientForm.MdiParent = Me
         ClientForm.Show()
    End If
    Cela fonctionnait parfaitement hier, mais aujourd'hui, sans que je touche a quoi que ce soit, cela ne fonctionne plus...

    L'objet ClientForm qui représente donc ma Form 'ListeClientsForm' vaut bien Nothing au lancement de l'application, mais lorsque je ferme sa fenêtre (avec sa petite croix rouge), ses ressources ne sont plus libérées...

    Du coup, mon code censé empêcher l'ouverture de deux fenêtres identiques simultanées, m'empêche d'ouvrir la fenêtre définitivement une fois fermée...

    Je ne sais pas si je suis très clair ^^

    En gros :
    - Au démarrage de l'application, ClientForm=Nothing
    - Lorsque j'ouvre la fenetre, ClientForm=blablabla.ListeClientsForm
    - Lorsque je l'ai fermé, ClientForm est toujours égal à blablabla.ListeClientsForm

    Alors qu'hier, la fermeture de la fenêtre entrainait bien la mise à zéro de ClientForm...
    Je peux "résoudre" le problème en mettant manuellement ClientForm=Nothing dans l'évènement FormClosed de ListeClientsForm, mais pour moi c'est un peu de la bidouille là.... et j'aimerais un truc propre.

    Donc, ma question est la suivante, est ce que la fermeture d'une Form est censé remettre à Nothing le pointeur vers cette Form comme cela semblait être le cas hier ? (D'après le MSDN, une Form MDI n'est pas "Dispose" à moins d'un appel explicite mais pourquoi ça le faisait tout seul hier ?)
    Pourquoi ce changement de comportement d'un jour à l'autre sans qu'aucune modification n'ai été effectuée ?

    Merci

  2. #2
    Membre du Club Avatar de Veler
    Profil pro
    Lycéen
    Inscrit en
    Mars 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2007
    Messages : 195
    Points : 47
    Points
    47
    Par défaut
    Baaaaaa, ouai mais ça consiste également en ça la chasse au bug, moi j'aurais fait également ClientForm = Nothing point bar, si ça fonctionne c'est que c'est ce qu'il faut faire, non?
    _______________________________________________
    Etienne

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Sors juste le Show du If :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If ClientForm Is Nothing Then
         ClientForm = New ListeClientsForm
         ClientForm.MdiParent = Me
    End If
    ClientForm.Show()
    Et dans ta ListeClientsForm, gère l'évènement FormClosing pour masquer la form au lieu de la fermer

  4. #4
    Membre régulier Avatar de jesslegende
    Développeur informatique
    Inscrit en
    Août 2009
    Messages
    156
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2009
    Messages : 156
    Points : 102
    Points
    102
    Par défaut
    bonjour,
    je pense pas que c'est le vrais probleme!
    notre ami crée plus d'instance qu'il souhaite, alors ce faut faire c'est contrôler les instances de childforms.
    Ex : utiliser une déclaration globale
    buena suerte...

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 ouverture fermeture Form
    Par Allspark dans le forum C#
    Réponses: 6
    Dernier message: 26/08/2010, 12h57
  3. Problème de fermeture d'une Form
    Par krolis dans le forum C#
    Réponses: 10
    Dernier message: 30/04/2010, 14h51
  4. Problème de fermeture de Form mère avec fille existante
    Par Vonziz dans le forum Windows Forms
    Réponses: 9
    Dernier message: 20/02/2009, 22h50
  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