2013-07-31 21 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]