LANCER UNE FEUILLE FILLE MDI UNE ET UNE SEULE FOIS

Messages postés
156
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
21 février 2019
- - Dernière réponse : LordOfTheShadow
Messages postés
175
Date d'inscription
vendredi 22 décembre 2000
Statut
Membre
Dernière intervention
9 septembre 2010
- 24 juil. 2009 à 11:44
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50323-lancer-une-feuille-fille-mdi-une-et-une-seule-fois

Afficher la suite 
LordOfTheShadow
Messages postés
175
Date d'inscription
vendredi 22 décembre 2000
Statut
Membre
Dernière intervention
9 septembre 2010
4 -
Sebmafate a raison. Un design pattern Singleton va te permettre de n'instancier qu'une seule fois un objet quelconque. Du coup ton formulaire mdi fille ne s'affiche qu'une fois.
sebmafate
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
31 -
Bonne idée... mais le plus simple et le plus propre est d'utiliser une classe singleton... ainsi plutot que de faire :
if (frm1 == null) {
...
}

il suffit de faire
Form1 frm1 = Form1.Show(this);
frm1.Activate();

La méthode Show de Form1 devra être construite comme ceci :

private static Form1 instance;
public static Form Show(Form parentMdi) {
if (instance == null) {
instance = new Form1();
instance.MdiParent = parentMdi;
}

instance.Show();
return instance;
}
giloutho
Messages postés
5
Date d'inscription
mardi 1 avril 2003
Statut
Membre
Dernière intervention
30 juillet 2006
-
Mille excuses j'ai copié mon bout de code trop vite. La ligne :
frm1= new F_Fourniss()
est en fait evidemment
frm1 = new Form1();
giloutho
Messages postés
5
Date d'inscription
mardi 1 avril 2003
Statut
Membre
Dernière intervention
30 juillet 2006
-
Bonjour,

Très bien ton source... Utile car je suis en plein dans les MDI en ce moment. J'ai légèrement modifié ton code d'ouverture de fenêtre :
if (frm1 == null)
{
frm1 = new Form1();
frm1.MdiParent = this;
}
frm1.Show();
Jai fait :
if (frm1 == null)
{
frm1 = new F_Fourniss();
frm1.MdiParent = this;
frm1.Show();

}
frm1.Activate();
Cela redonne le focus à la fenêtre et la remet au premier plan...
anadeveloppeur
Messages postés
156
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
21 février 2019
-
Merci à krimog qui grace à lui je me suis inspiré de la solution depuis le sujet : http://www.csharpfr.com/forum/sujet-LANCER-FEUILLE-FILLE-MDI-SEULE-FOIS_1105654.aspx#5
Cordialement.

SimO TM