C# 子窗体将在新窗口中打开

C# 子窗体将在新窗口中打开,c#,winforms,mdi,mdichild,mdiparent,C#,Winforms,Mdi,Mdichild,Mdiparent,当我使用以下代码时,我的子窗体将在新窗口中打开,而不是在MDI窗体中打开: Form1 f1 = new Form1(); f1.Dock = DockStyle.Fill; f1.MdiParent = this.MdiParent; this.WindowState = FormWindowState.Maximized; f1.Show(); 正如注释中的@Keyur PATEL所建议的,您应该将“f1”窗体的父级设置为要将“f1”窗体作为MDI子窗体注入其中的窗体对象(而不是对象

当我使用以下代码时,我的子窗体将在新窗口中打开,而不是在MDI窗体中打开:

Form1 f1 = new Form1();
f1.Dock = DockStyle.Fill;
f1.MdiParent = this.MdiParent;

this.WindowState = FormWindowState.Maximized;

f1.Show(); 

正如注释中的@Keyur PATEL所建议的,您应该将“f1”窗体的父级设置为要将“f1”窗体作为MDI子窗体注入其中的窗体对象(而不是对象MDI父属性)(不是父窗体的属性,而是对象本身)

有关MDI应用程序的详细信息,请参阅

Form1 f1 = new Form1();
f1.Dock = DockStyle.Fill;//This is not necessary,can work without it
f1.MdiParent = this; //try like this

this.WindowState = FormWindowState.Maximized;

f1.Show(); 

正如注释中的@Keyur PATEL所建议的,您应该将“f1”窗体的父级设置为要将“f1”窗体作为MDI子窗体注入其中的窗体对象(而不是对象MDI父属性)(不是父窗体的属性,而是对象本身)

有关MDI应用程序的详细信息,请参阅

Form1 f1 = new Form1();
f1.Dock = DockStyle.Fill;//This is not necessary,can work without it
f1.MdiParent = this; //try like this

this.WindowState = FormWindowState.Maximized;

f1.Show(); 

你能试试看吗而不是
f1.MdiParent=this.MdiParent?我不熟悉MDI,但简单看了一下后,似乎您正在将新窗体的父窗体设置为当前窗体的父窗体,而不是当前窗体本身。f1.mdipalent=xxx,其中xxx是MDI父窗体,通常是MDI应用程序的主窗体。因此,不要设置dock属性,也不要设置WindowsState属性。这些将由mdi应用程序自动完成。您可以尝试
f1.MdiParent=this
而不是
f1.MdiParent=this.MdiParent?我不熟悉MDI,但简单看了一下后,似乎您正在将新窗体的父窗体设置为当前窗体的父窗体,而不是当前窗体本身。f1.mdipalent=xxx,其中xxx是MDI父窗体,通常是MDI应用程序的主窗体。因此,不要设置dock属性,也不要设置WindowsState属性。这些将由mdi应用程序自动完成。Dock=DockStyle。填充不可用necessary@BhubanShrestha是的,但这是他的代码,我刚刚编辑了出错的地方。:)没有什么。但是您也可以提到这一点。在mdi应用程序中不设置WindowsState也是很常见的,因为每个新的mdi子窗体将自动获得与其他mdi子窗体相同的WindowsState。Dock=DockStyle。Fill不是necessary@BhubanShrestha是的,但这是他的代码,我刚刚编辑了出错的地方。:)没有什么。但是您也可以提到这一点。在mdi应用程序中不设置WindowsState也是很常见的,因为每个新的mdi子窗体都将获得与其他mdi子窗体相同的WindowsState