我正在開發一個VS 4.0中的.NET 4.0的C#WinForms應用程序在我的ASUS NV552筆記本電腦上使用帶有282ppi的UltraHD監視器。爲了舒適地工作,我在Windows 10 Pro Creators更新中將系統縮放因子設置爲300%。當我編譯和啓動項目時,表單的大小與我在VS Designer中看到的大小不同,看起來,.NET停止重新計算表單大小以適應大的表單大小。在VS IDE和exe中的高分辨率屏幕上的WinForms窗體的不同和錯誤的大小
例如,當在VS屬性瀏覽器中將窗體的Size
屬性設置爲1606; 1284
時,從exe中顯示的窗體的結果大小爲421x285。但是,當我調整設計器中的表單到1943x1284時,我在exe中看到421x285的相同形式!
此外,對於較小的尺寸,我甚至可以看到寬度和高度比例不合適的結果表單。
如果它有助於在某種程度上,下面是這種形式在了.Designer.cs文件對應的自動縮放設置時Size
等於1606; 1284
:
this.AutoScaleDimensions = new System.Drawing.SizeF(19F, 37F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1570, 1181);
我也明白,在默認情況下VS 2017年生產DPI-不知道EXE應用程序,如果從EXE顯示的表單大小減少像素(就像它開發爲96ppi),這沒關係。微軟解決了這個問題的.NET Framework 4.7的版本 - 現在我們可以讓我們的WinForms使用的app.config以下設置形成DPI感知(根據High DPI support in Windows Forms):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
</System.Windows.Forms.ApplicationConfigurationSection>
</configuration>
但我需要解決舊的傳統DPI不知道WinForms應用程序的問題。有解決方案嗎?
請不要編寫無用的評論,包含諸如「WinForms is dead」和「切換到WPF」之類的短語。只有在有想法的情況下才寫,以便改進WinForms項目中描述的行爲。
這是一個很好的提示,如果需要準確地制定一個WinForms應用96DPI一個高分辨率屏幕上 - 謝謝你!不過,我仍然想知道我們是否有能力讓VS WinForms Designer按預期工作,而不會使VS模糊不清;) – TecMan
因此,禁用DPI感知只是臨時解決方法。真正的修復正在進行中。 –