我在WindowsFormsHost中托管了一个Winforms属性网格。 在您更改Windows中的DPI设置之前,一切都运行良好 或者使用DPI非常高的显示器。
当你这样做时,属性名称开始重叠,似乎 它安排了UI,然后重新调整字体大小以适应高DPI。 很奇怪。 这就是它的样子:
(注意价值标签如何不像名称标签那样被“炸毁”?) 我已经尝试了所有我能想到的与DPI相关的东西。 在PropertyGrid上设置AutoScaleMode, 从主机中删除属性映射, 设置UseCompatibleTextRendering等...
我一直在浏览.NET源代码,似乎没有办法 为名称和值设置不同的字体。
我试图在一个空的WPF应用程序中重现这个,但是无法这样做。 有人有主意吗?我已经用尽了所有资源和Google技能,但无济于事。
由于
西蒙
编辑:如果相关,我在控制面板下设置“更改所有项目的大小” - >显示为“大 - 150%”。使用Windows 8,但也在其他平台上看到了这个问题。
答案 0 :(得分:2)
我遇到了完全相同的问题 - 对我来说最好的方法是关闭应用程序中的DPI感知。最好的方法是使用AssemblyInfo
[assembly: DisableDpiAwareness]
答案 1 :(得分:1)
原来导致DPI问题的事情,是一个真实的 System.Windows.Forms.WebBrowser,从我们的一个用户控件注释掉/删除那个控件,瞧,一切都很好。
这回答了我的问题,我的问题已经解决了。虽然我仍然很好奇地发现 为什么会发生这种情况。 (不要问我在找到这个之前花了多少时间抓住稻草)
我可能会补充一点,虽然这肯定证明是我的问题的根源, 我无法在较小的应用程序中重现它。