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 :
Cela fonctionnait parfaitement hier, mais aujourd'hui, sans que je touche a quoi que ce soit, cela ne fonctionne plus...
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
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
Partager