我的应用程序在 100% DPI 设置下看起来不错,但是当用户选择不同(125% 或 150%)时,单词不适合容器。我尝试使用在这里找到的解决方案来解决此问题:检测 Windows 字体大小(100%、125%、150%),即:
this.AutoScaleMode = AutoScaleMode.Dpi;
它修复了 150% 设置(使其有点模糊,但没关系),不幸的是,它没有对 125% 进行同样的设置,而 125% 是在应用程序打算运行的 PC 上使用的。
是否有一些简单的解决方案,或者我是否必须手动重新排列每个表单?
所有容器必须使用相同的 AutoScaleMode - 这部分解决了我的问题
要求 Windows 应用程序在不同分辨率下应具有相同的布局,这意味着更改分辨率不应影响应用程序的布局。以下是执行此操作的步骤。
- 使用表格布局面板
- 将控件拖到tablelayoutpanel的单元格中并设置anchor和dock属性。
- 设置拖动控件的rowspan和colspan属性来合并单元格
- 设置拖动控件相对于单元格的边距和填充。
- 拖动所有控件并按照相同步骤,使用tablelayoutpanel完成设计
- 现在设置 tablelayoutpanel 的所有列和行大小 = autosize (或以 % 为单位)
- 设置tablelayoutpanel属性autosize = true,autosizemode =增长和收缩
- 设置表单属性 autosize = true,autosizemode = 增长和收缩
- 运行 Windows 应用程序如果您的 Windows 应用程序以最大状态打开,则设置 tablelayoutpanel 停靠属性 = fill。
将此行添加到
Program.cs
class Program
{
[STAThread]
static void Main()
{
...
Application.SetHighDpiMode(HighDpiMode.DpiUnaware); // <-----
...
Application.Run(new Form1());
}
}
为了获得最佳结果,请尝试每种
HighDpiMode
模式。 DpiUnaware
对我有用,因为我设计的表单超过 100%(175%)。这取决于你的情况。