2013-07-31 49 views
2

我有一個WindowsFormsHost託管的Winforms屬性網格。 一切正常,直到您更改窗口中的DPI設置, 或使用DPI非常高的顯示器。Winforms屬性網格高DPI UI重疊

當你這樣做時,屬性名稱開始重疊,看起來像 它排列UI,然後重新調整字體的大小以適應高DPI。 很奇怪。 這是什麼樣子:

enter image description here

(注意如何值標籤不是「吹起來」之類的名稱標籤?) 我已經試過所有我能想到的,是一個選擇DPI。上的PropertyGrid 設置AutoScaleMode,從主機, 設置UseCompatibleTextRendering等 刪除屬性映射...

我一直在翻閱了.NET源和似乎沒有成爲一個辦法 集名稱與值不同的字體。

我試圖在一個空的WPF應用程序中重現這一點,但一直無法這樣做。 任何人有任何想法?我已經耗盡了所有的資源和Google技能,無濟於事。

感謝

西蒙

編輯:櫃面這是相關的,我設置「更改所有項目的大小」控制面板下 - >顯示爲「大 - 150%」。使用Windows 8,但也發現在其他平臺上的問題。

+0

你能重現這與示例winforms應用程序?我不能。 –

+0

很難解釋。查找吞噬異常,調試+異常,選中拋出複選框以查看CLR異常。工具+選項,調試,一般,取消只是我的代碼。 –

+0

我不害怕吞下異常。我一直無法重現(儘管如此)。忘了提及它是運行WPF應用程序的WinForms項目。 – Simon

回答

1

結果是導致DPI問題的原因之一,是System.Windows.Forms.WebBrowser的一個實例,從我們的用戶控件之一註釋掉/刪除了一個控件,這一切都很好。

這回答我的問題,我的問題已解決。雖然我仍然很好奇 爲什麼發生這種情況。 (不要問我花了多少小時在抓住吸管前發現這個)

我可能補充說,雖然這已經證明是我的問題的來源,但我還沒有能夠重現它在一個更小的應用程序。

2

我得到了完全相同的問題 - 對我來說,最好的辦法是關閉應用程序中的DPI感知。最好的辦法是這樣AssemblyInfo

[assembly: DisableDpiAwareness]