Фреймворк, по-видимому, не поддерживает дочерние окна MDI, принадлежащие друг другу, поэтому вы должны смоделировать это поведение самостоятельно:
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();
}
Обычно я делаю собственные формы, а не дочерние формы MDI. Они не остаются в контейнере MDI, но, по крайней мере, они остаются впереди.
Возможно, причина этого ограничения заключается в странном или неоднозначном желаемом поведении, когда дочерний объект MDI, являющийся владельцем, максимизируется внутри контейнера. Приведенный выше код позволит принадлежащей форме идти за развернутым родительским элементом, если в этом случае нажать на нее. Однако если он находится вне контейнера, он останется видимым.