【发布时间】:2020-10-12 07:15:15
【问题描述】:
我有一个包含面板的 MDI 父表单。该面板包括图表和其他一些用户信息。当我从菜单打开表单时,新打开的表单显示在 MDI 父面板下。 如何在所有 MDI 父控件的上方显示子窗体。 我正在使用以下代码打开表单。
SalesInvoice sale = new SalesInvoice();
sale.MdiParent = this;
sale.Show();
【问题讨论】:
-
您将该面板添加到 MdiParent 窗体,而子窗体添加到 MdiClient 容器。您的面板将始终位于其他控件之上。您可以改用无边框、停靠的子表单。或者完全想出另一种布局。
-
您需要对接该面板。停靠后,MDI 子表单将正确占用任何剩余空间。
-
@Idle_Mind 如果将 Panel 停靠在 MdiParent 内部(当然不能停靠在 MdiClient 内部),还需要
SendToBack()MenuStrip、ToolStrip(s) 和 StatusStrip,否则 Panel将重叠它们。无论如何,mdi 子窗体将进入面板(因为它们仍处于较低层次结构中)。 -
这是使用 Show() 和 ShowDialog() 的区别。 ShowDialog() os 阻塞并等待子窗体在返回父窗体之前关闭。 Show 将让子进程保持打开状态并返回父进程(前提是您没有在退出时关闭子进程)。
标签: c# windows vb.net visual-studio winforms