Winforms Infragistics功能区覆盖最大化MDI子对象

Winforms Infragistics功能区覆盖最大化MDI子对象,winforms,layout,ribbon,infragistics,mdi,Winforms,Layout,Ribbon,Infragistics,Mdi,我正在使用Infragistics NetAdvantage WinForms捆绑包(v 2012 2)中的UltraToolbarsManager在现有的WinForm应用程序中引入功能区工具栏 我在主MDI容器窗体中设置主功能区,然后在子窗体内的管理器中设置附加功能区。 MdiMergeable属性在两种形式中都设置为true 子窗体设置为填充MDI父窗体中的所有可用区域: -FormBorderStyle=FormBorderStyle.None -Dock=DockStyle.Fill

我正在使用Infragistics NetAdvantage WinForms捆绑包(v 2012 2)中的UltraToolbarsManager在现有的WinForm应用程序中引入功能区工具栏

我在主MDI容器窗体中设置主功能区,然后在子窗体内的管理器中设置附加功能区。
MdiMergeable属性在两种形式中都设置为true

子窗体设置为填充MDI父窗体中的所有可用区域:
-
FormBorderStyle=FormBorderStyle.None

-
Dock=DockStyle.Fill

-没有控制箱

问题是,当我显示()我的子窗体时,它占据所有区域,工具栏正确合并,但我看到窗体边框。当我双击窗体的上边框时,边框消失,MDI子项正确显示(或者更好,根据我的需要)

如果这样更改表单样式:
Dock=DockStyle.Fill
=>
WindowState=FormWindowState.Maximized


窗体顶部位于功能区下方,部分隐藏在功能区中

如果未将Dock设置为DockStyle.Fill,则窗体边框显示问题不存在,窗口在最大化时仍将占据MDI父窗口的整个区域

除非您有设置DockStyle.Fill的特定原因,否则我建议将其保留为DockStyle.None


请注意,如果删除功能区并在其位置使用Microsoft MenuStrip,则会看到类似的行为,这样功能区似乎不会影响此行为。

设置以下属性:

  • FormBorderStyle=FormBorderStyle.None
  • Dock=DockStyle.None
在窗体对象构造期间,并推迟到显示之前(布局
事件),此设置:

  • WindowState=FormWindowState.Maximized
并且表单显示正确

我认为,当我在构建表单对象期间设置此值时,MDI子可用区域不考虑功能区占用的空间(可能在功能区占用部分空间之前计算可用区域)。

当我将
WindowState=FormWindowState.Maximized
的设置推迟到布局事件时,MDI子可用区域考虑了功能区占用的空间。

是否有特定原因将DockStyle设置为DockStyle.Fill?我必须填充所有MDI子可用区域,我认为有两种方法:填充或最大化。实际上两者都不起作用。我相信对于MDI儿童来说,最大化更合适,而且可能是您想要的行为。如果其中任何一个导致它位于父对象上的功能区后面,那么我需要关于该问题的更多详细信息,因为我无法复制此内容。丝带最小化了吗?你能提供足够的代码来重现这个问题吗?另外,您所引用的Infragistics程序集的确切版本是什么?正如您所说,我将Fill DockStyle属性替换为None(因此+1),并使用FormWindowsState.Maximized。但问题中强调的最后一个问题仍然存在。