C# Windows窗体中的MDI子窗体

C# Windows窗体中的MDI子窗体,c#,winforms,C#,Winforms,我有一个MDI容器标记为true的表单。此窗体是具有子窗体的父窗体。在子表单中,我使用此代码以最大化的大小加载它 this.WindowState = FormWindowState.Maximized; 我使用以下代码显示子窗体: Form2 f2 = new Form2(); f2.MdiParent = this; f2.Show(); 而且子窗体是固定的,所以它不能调整大小。但是,无论我如何禁用最大化按钮,它都将消失,并且可以还原下来。尝试以下操作: f2.MinimizeBox =

我有一个MDI容器标记为true的表单。此窗体是具有子窗体的父窗体。在子表单中,我使用此代码以最大化的大小加载它

this.WindowState = FormWindowState.Maximized;
我使用以下代码显示子窗体:

Form2 f2 = new Form2();
f2.MdiParent = this;
f2.Show();
而且子窗体是固定的,所以它不能调整大小。但是,无论我如何禁用最大化按钮,它都将消失,并且可以还原下来。

尝试以下操作:

f2.MinimizeBox = false;
你可以试试

f2.ControlBox = False;

这可能会同时隐藏MaximumBox和MinimumBox,但不会隐藏Close按钮。

也有同样的问题,最终的解决方法是处理OnMove事件并重置其中的可见性,即使它们已经设置为false。不知道为什么会这样,但对我来说确实如此。

你是在问如何确保你的表单总是最大化,并且永远不会低于全屏?是的。我只想将此表单显示为最大化并禁用还原。在这种情况下,不要对用户太苛刻。如果他们想将表单恢复到非最大化状态,请允许他们。你阻止他们这样做的令人信服的理由是什么?我认为花时间和精力正确地布局控件是值得的,而不是绝对地定位所有内容,然后阻止用户调整表单的大小。当你开始做的足够多后,你会非常擅长它,而且不会占用你太多额外的时间,而且它极大地改善了用户体验。毕竟,您的内容的大小并不总是固定的,用户的屏幕大小/分辨率也不总是相同的,或者不同的用户可能希望显示比固定格式允许的更多/更少的内容。当您使用这样的属性时,Winforms会忘记抛出异常。本机Windows MDI支持代码不支持这一点,它有一个硬要求,即子窗口具有一个带有常规按钮的正常大小的框架。如果这对您很重要,那么MDI不是合适的窗口模式。请您更具体一点好吗?当你说它不起作用时,你是什么意思?它做什么?我如何使用f2.MinimizeBox=false它将显示控件并可以还原。顺便说一句,我对最小化没有问题。我不想还原。您能说得更具体一点吗?问题是,当子MDI窗体最大化时,即使ControlBox、MaximizeBox等设置为false,控制框也会显示,对吗?