olibara
Messages postés666Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention11 mars 2010
-
8 mai 2008 à 21:14
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
9 mai 2008 à 09:57
Bonjour
Voici la situation et ma question
Dans une form Form1
Dans une fonction J'ouvre une fenetre de dialogue non modale Form2 et lui passe une datatable dans le constructeur
A tout moment dans Form1 je peux repasser par la fonction d'ouverture pour envoyer une autre datatable
A part passer par des flags public comment savoir proprement que la form2 est déja ouverte pour eviter d'en ouvrir une autre ou la fermer si nécessaire !<!-- / message -->
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 8 mai 2008 à 23:00
Salut,
Si Form2 (au passage, tu devrais peut être mettre de vrais noms) ne doit posséder qu'une seule instance dans l'application, tu peux passer par un singleton.
olibara
Messages postés666Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention11 mars 20106 9 mai 2008 à 07:02
Merci Coq
Bien sur dans mon app ce sont des vrais nom
frmZoom
frmDgvZoom
Mais pour la synthese d'une question c'est parfois plus facile d'abstraire Form1 et Form2
Cela étant
1- Singleton : je n'ai jamais employé, comment puis-je declarer une form singleton ?
2- Si j'ai déclaré ma form singleton que se passe-t-il si je refais une deuxieme fois
frmDgvZoom fDZ = new frmDgvZoom ()
Cette form est un petit dialogue que ne n'ouvre que dans un certain contexte
Explication
Dans la forme principale l'utilisateur peu cliquer sur un element pour avoir la liste de tous les éléments liés
Dans ce cas j'ouvre frmDgvZoom en passant la datatable de ces element et j'affiche un DGV que l'utilisateur peut parcourir pour afficher ces elements dans la form principale
A tout moment l'utilisateur peut cliquez un AUTRE elément dans la forme principale a ce moment je dois charger le meme dialogue avec une nouvelle datatable et eventuellement faire un clear de differentes choses
Mais si l'utilisateur ferme lui meme le dialogue je peux appeler le clear de maniere explicite.
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 9 mai 2008 à 09:20
C'est un pattern dont le but est de n'avoir qu'une seule et unique instance du type dans l'application (enfin, dans le domaine d'application plus précisément), le constructeur n'est pas censé accessible de l'extérieur de celui ci (ce qui répond à ta seconde question).
http://msdn.microsoft.com/en-us/library/ms998558.aspx
olibara
Messages postés666Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention11 mars 20106 9 mai 2008 à 09:35
Merci Coq
A mon avis aujourd'hui je suis trop idiot ou je n'ai pas encore asse d'expèrience pour comprendre ce truc
Je vois pas du tout comment pratiquement je déclare une Form singleton
En plus si je comprends bien, elle s'intancie une fois et reste présente dans toute l'application.
Ce n'est pas le but, je dois l'ouvrir quand j'en ai besoin pouvoir la fermer depuis une autre form ou laisser l'utilisateur la fermer lui meme
Je me demande vraiment si utiliser un flag me disant si elle est ouverte n'est pas la bonne solution.
Mais ca ne m'aide toujours pas a savoir comment la retrouver depuis form1 pour la refermer si nécessaire.
Finalement la question se resume a ca :
Comment trouver dans une application si une form est instanciée et agir en conséquence !
Vous n’avez pas trouvé la réponse que vous recherchez ?