winforms - 使用 WinForms 设计器时,是否始终需要将 DPI 设置为 96?

标签 winforms

对于我当前的显示器,我更喜欢每英寸 120 像素的 DPI 设置(Windows 建议将其作为默认设置)。但是,设计表单后,它在不使用每英寸 120 像素的系统上通常会错误地布局。

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

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

附注我读过相关帖子。他们都很有趣,但没有回答我的问题。

How to control the font DPI in .NET WinForms app

C# WinForms disable DPI scaling

WinForms Different DPI Layouts

DPI not scaling properly

Visual Studio and DPI issue

最佳答案

没有。使用 WinForms 设计器时,您不需要始终将 DPI 设置为 96。

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

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

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

<小时/>

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

Automatic scaling in Windows Forms

和:

Child controls on a UserControl may get clipped in a system with a lower Font Dpi

关于winforms - 使用 WinForms 设计器时,是否始终需要将 DPI 设置为 96?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12387217/

相关文章:

c# - 如何在 Windows 窗体应用程序中保存应用程序设置?

c# - 等待停止线程的执行并且永远不会继续

C# Winforms 不规则窗口

c# - SqlCommand 参数不起作用

winforms - 需要 dpiAware 可执行文件才能在 Windows XP/2003 中工作

c# - 面板没有获得焦点

C# ini 解析器问题

c# - 如何在 ListView 中对整数进行排序

vb.net - 有没有办法向 ComboBox 添加可点击的图标?

C# Windows 应用程序窗体到 Html 窗体