0

我正在使用 Visual Studio 2010 中的 .NET 4 配置文件在 Windows 10 上的 Windows 100% 缩放 (96dpi) 中开发 Winforms。

根据这个高度评价的答案的建议,我在文件中设置为true,dpiAware将主表单的设置为还必须将这些行添加到 Designer.cs 文件中:app.manifestAutoScaleModeFontsplitContainersAutoScaleMode

*.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
*.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

这确保了如果用户碰巧在 125%、150% 甚至其他缩放模式下使用 Windows,那么 GUI 将正确调整大小,而不会出现某些组件太小或太大的问题。

不幸的是,根据上述链接的建议:“只有控件列表中的控件在调用ResumeLayout末尾时InitializeComponent才会自动缩放”,这意味着我需要将上述两行放在 Designer.cs 文件中。我不能简单地将它们放在 Form Load 事件中。

不幸的是,这意味着每当我在所见即所得编辑器中更新或移动小部件/按钮/标签时,都会自动重新创建 Designer.cs 文件,并且我丢失了上面的两行代码。所以每次我在 Wysiwyg 编辑器中更新 GUI 时,我都必须记住将它们放回原处。

该链接还提供了一个潜在的解决方案,通过部分避免使用所见即所得编辑器,而是在 Load 事件中以编程方式创建 splitContainers 来避免这种丑陋。我引用:“如果您动态添加控件,那么您需要先SuspendLayout(); AutoScaleDimensions = new SizeF(6F, 13F); AutoScaleMode = AutoScaleMode.Font; ResumeLayout();在该控件上添加它”。

问题是我有大量的 splitContainer 代码要移动(例如添加到 splitContainers 的对象),它会破坏所见即所得编辑器的外观(我想看看我的 splitContainers,非常感谢因为它们是 GUI 的关键部分,并且里面有很多元素/小部件,我也想在设计时看到它们!)。

我的问题是我是否可以两全其美:在所见即所得编辑器中保持和内容的外观,同时通过使用上面似乎必须在设计器splitContainers中的两行代码(*.AutoScaleMode = ...和)保持适当缩放的功能*.AutoScaleDimensions = ....cs 文件之前*.ResumeLayout()被调用。

4

0 回答 0