我有一个ToolStripContainer
with aMenuStrip
和一个ToolStrip
inside,都在顶部。它们在 Windows 上像往常一样排列,工具栏上方的菜单栏。现在,Windows 窗体和 DPI 缩放支持一直有点不确定。虽然在 100% 时一切看起来都很好,但我目前正在使用 110% DPI 缩放以及 ToolStripContainer 中的菜单栏和工具栏开关位置(不过,我怀疑它与更高的缩放因子相同):
我对为什么会发生这种情况的猜测是,即使它们是由容器排列的,设计师也将这两个控件放置在特定位置,并且通过 DPI 缩放ToolStripContainer
其子项的获取位置,这与将工具栏放置在菜单栏上方是一致的,就好像有人拖动条形图并重新排列它们(毕竟这是可以交互的)。
MenuStrip
除了用 a替换MainMenu
之外,是否有一种简单的(ish)方法可以确保无论 DPI 缩放如何,两者的顺序都保持一致?我有大约 50 个不同的窗口以几乎相同的方式进行更改,并且还宁愿避免将额外的代码放入代码隐藏文件中¹。
到目前为止我尝试过的事情:
- 设计器中的所有更改都以 100 % 的比例应用。
- 更改工具栏和菜单栏的 z 顺序以尝试控制它们的顺序。这适用于面板和对接,但显然不适用于
ToolStripContainer
。 - 对接
MenuStrip
在顶部。不工作;设计器只是从代码中删除Dock = None
并显示Top
为默认值,但应用缩放后,它又回到Dock = None
了设计器中(即使不接触Form
设计器中的 ,运行时的结果也是一样的)。
¹ 这些是控件库的演示应用程序,这里的要点是保持代码干净,并且仍然提供开箱即用的良好体验。因此,将代码隐藏在没有人阅读的已经很糟糕的代码中的设计者专用解决方案将是更可取的。