Infragistics功能区超越了最大化的MDI孩子

时间:2013-03-13 16:44:02

标签: winforms layout ribbon infragistics mdi

我正在使用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

表单顶部位于功能区下方,并且部分隐藏了它。

2 个答案:

答案 0 :(得分:1)

如果没有将Dock设置为DockStyle.Fill,则窗体边框显示的问题不存在,并且当窗口最大化时,窗口仍然会占用MDI父窗口的整个区域。

除非你有特定的理由设置DockStyle.Fill我建议保留DockStyle.None。

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

答案 1 :(得分:0)

设置以下属性:

  • FormBorderStyle = FormBorderStyle.None
  • Dock = DockStyle.None

在表单对象构造期间和推迟到显示之前(Layout事件)此设置:

  • WindowState = FormWindowState.Maximized

表格正确显示。

我认为,当我在构造表单对象期间设置此值时,MDI子可用区域不会考虑功能区占用的空间(可能在功能区占用部分功能之前评估可用区域) )。
当我将WindowState = FormWindowState.Maximized的设置推迟到布局事件时,MDI子可用区域会考虑功能区占用的空间。