8

对于我目前的显示器,我更喜欢每英寸 120 像素的 DPI 设置(windows 建议将其设置为默认值)。但是,在设计表单后,它经常在不使用每英寸 120 像素的系统上布局不正确。

我想知道,每当我使用设计器时,是否有必要将显示设置设置为每英寸 96 像素?

此外,当其他开发人员具有不同的 DPI 时,也会出现一些问题。他们在设计器中打开一个表单并移动一个文本编辑控件之类的东西,然后突然发现它也会自动调整大小。然后,有一个控件的大小与其他控件不同,我们陷入了混乱。

PS 我已经阅读了相关的帖子。他们都很有趣,但没有回答我的问题。

如何在 .NET WinForms 应用程序中控制字体 DPI

C# WinForms 禁用 DPI 缩放

WinForms 不同的 DPI 布局

DPI 未正确缩放

Visual Studio 和 DPI 问题

4

2 回答 2

5

不需要。在使用 WinForms 设计器时,您不需要总是将 DPI 设置为 96。

如果将 AutoScaleMode 属性设置为 Dpi,则设计器会将当前系统 DPI 写入表单的 AutoScaleDimensions 属性中的 Designer.cs 文件。当设计器用于具有不同 DPI 的系统时,此信息将用于重新调整表单,并且可以在不同 DPI 下使用设计器。

当我尝试其他缩放模式时,这似乎效果不佳。“无”意味着控件在运行时不会缩放,“字体”似乎存在舍入错误,当显示设置 DPI 更改时,控件大小可能会略有变化,从而导致错误。

我还发现,对于添加到表单的 UserControl,最好将其 AutoScaleMode 设置为 Inherit。如果您使用 Dpi,则其上的控件会重新缩放两次,最终布局不正确。


经过几个小时的实验和互联网搜索,我提出了上述指南,其中我发现了以下两篇文章:

Windows 窗体中的自动缩放

和:

UserControl 上的子控件可能会在具有较低字体 Dpi 的系统中被剪裁

于 2012-09-13T12:21:50.793 回答
1

我认为将您的 dpi 永久设置为不同的值不会对您有所帮助。问题是当您更改 dpi 时会出现问题,即您拥有的表单布局无法处理不同的 dpi。

我没有给你一个绝对的解决方案,只是你应该用不同的 dpi 进行测试,看看它是否会导致表单显示出现问题。找出导致问题的原因并不难,您将很快学会避免什么。

于 2012-09-12T11:46:50.187 回答