2017-07-04 40 views
1

我正在開發一個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項目中描述的行爲。

回答

1

當啓用HDPI縮放時,WinForms Designer無法正常工作。您可以一定程度上改善你的經驗,你聲明的VisualStudio過程DPI-不知道,在這個博客帖子描述: https://code4ward.net/2016/11/29/visual-studio-winforms-designer-on-highdpi/

不幸的是沒有簡單的方法來將現有的應用程序支持DPI意識,每種形式必須是單獨工作。

謝謝,蔡健雅

+0

這是一個很好的提示,如果需要準確地制定一個WinForms應用96DPI一個高分辨率屏幕上 - 謝謝你!不過,我仍然想知道我們是否有能力讓VS WinForms Designer按預期工作,而不會使VS模糊不清;) – TecMan

+1

因此,禁用DPI感知只是臨時解決方法。真正的修復正在進行中。 –

相關問題