Le cadre ne semble pas compatible avec Windows MDI enfant possédant l'autre, donc vous devez simuler ce comportement vous:
static Form f1 = new Form();
static Form f2 = new Form();
static Form f3 = new Form();
[STAThread]
static void Main()
{
f1.IsMdiContainer = true;
f2.MdiParent = f1;
f3.MdiParent = f1;
f1.Show();
f2.Show();
f3.Show();
f2.Activated += new EventHandler(f2_Activated);
Application.Run(f1);
}
static void f2_Activated(object sender, EventArgs e)
{
f3.Activate();
}
Je viens de faire généralement des formes appartenant à ne pas être les formulaires enfants MDI. Ils ne restent pas dans le conteneur MDI, mais au moins ils restent devant.
La raison pour laquelle cette limitation existe peut-être en raison du comportement souhaité étrange ou ambigu lorsque l'enfant MDI qui est le propriétaire est agrandi dans le conteneur. Le code ci-dessus permettra au formulaire détenu d'aller derrière le parent maximisé si vous cliquez dessus dans ce cas. Si vous l'avez en dehors du conteneur, cependant, il restera visible.
Votre code fonctionne bien .. Mais le plus triste est que je dois câbler cet événement pour chaque autre forme de mon application. –
Il existe également un événement sur le parent MDI lorsqu'un enfant est activé. – BlueMonkMN