【问题标题】:Infragistics ribbon goes over maximized MDI childInfragistics 功能区越过最大化的 MDI 子项
【发布时间】:2013-03-13 16:44:01
【问题描述】:

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

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

【问题讨论】:

  • 您将 DockStyle 设置为 DockStyle.Fill 是否有特定原因?
  • 我必须填充所有 MDI 子可用区域,我想我有两种方法:填充或最大化。实际上两者都不起作用。
  • 我相信对于 MDI 孩子来说,Maximize 更合适,并且可能是您想要的行为。如果其中任何一个导致它落后于父级的功能区,那么我需要有关该问题的更多详细信息,因为我无法重现此问题。色带是否最小化?你能提供足够的代码来重现这个问题吗?另外,您引用的 Infragistics 程序集的确切版本是什么?

标签: winforms layout ribbon infragistics mdi


【解决方案1】:

如果您不将 Dock 设置为 DockStyle.Fill,则不会出现表单边框显示的问题,并且窗口在最大化时仍将占据 MDI 父级的整个区域。

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

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

【讨论】:

  • 我用 None 替换了 Fill DockStyle 属性,正如你所说的(所以 +1)并使用了 FormWindowState.Maximized。但是问题中突出显示的最后一个问题仍然存在。
【解决方案2】:

设置以下属性:

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

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

  • WindowState = FormWindowState.Maximized

并且表格显示正确。

我认为,当我在表单对象的构造过程中设置这个值时,MDI子可用区域没有考虑功能区占用的空间(可能在功能区占用部分空间之前评估可用区域)。
当我将WindowState = FormWindowState.Maximized的设置推迟到Layout事件时,MDI子可用区域考虑了ribbon占用的空间。

【讨论】:

    猜你喜欢
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多