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

Sco*_*ham 7 winforms

使用我当前的显示器,我更喜欢每英寸120像素的DPI设置(窗口暗示为默认值).但是,在设计表单后,它通常会在不使用每英寸120像素的系统上错误地布局.

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

此外,当其他开发人员具有不同的DPI时,存在一些问题.他们在设计器中打开一个表单并移动类似文本编辑控件的东西,然后突然发现它自动调整大小.然后,有一个控件与其他控件的尺寸不同,而且我们一团糟.

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

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

C#WinForms禁用DPI缩放

WinForms不同的DPI布局

DPI无法正确缩放

Visual Studio和DPI问题

Sco*_*ham 5

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

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

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

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


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

Windows窗体中的自动缩放

和:

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


kri*_*anp 1

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

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