LordOfTheShadow
Messages postés174Date d'inscriptionvendredi 22 décembre 2000StatutMembreDernière intervention 9 septembre 20105 24 juil. 2009 à 11:44
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és4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 20 juil. 2009 à 10:22
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és5Date d'inscriptionmardi 1 avril 2003StatutMembreDernière intervention30 juillet 2006 17 juil. 2009 à 20:18
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és5Date d'inscriptionmardi 1 avril 2003StatutMembreDernière intervention30 juillet 2006 17 juil. 2009 à 20:16
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és153Date d'inscriptionsamedi 10 septembre 2005StatutMembreDernière intervention21 février 2019 17 juil. 2009 à 12:23
24 juil. 2009 à 11:44
20 juil. 2009 à 10:22
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;
}
17 juil. 2009 à 20:18
frm1= new F_Fourniss()
est en fait evidemment
frm1 = new Form1();
17 juil. 2009 à 20:16
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...
17 juil. 2009 à 12:23
Cordialement.
SimO TM