【问题标题】:Winforms property grid high dpi ui overlapWinforms 属性网格高 dpi ui 重叠
【发布时间】:2013-07-31 10:39:11
【问题描述】:

我在 WindowsFormsHost 中托管了一个 Winforms 属性网格。 在您更改 Windows 中的 DPI 设置之前,一切都运行良好, 或使用具有非常高 DPI 的显示器。

当你这样做时,属性名称开始重叠,看起来像 它排列 UI,然后重新调整字体大小以适应高 DPI。 很奇怪。 这是它的样子:

(请注意价值标签不像名称标签那样“炸毁”?) 我已经尝试了所有我能想到的与 DPI 相关的东西。 在 PropertyGrid 上设置 AutoScaleMode, 从主机中删除属性映射, 设置 UseCompatibleTextRendering 等...

我一直在浏览 .NET 源代码,但似乎没有办法 为名称和值设置不同的字体。

我试图在一个空的 WPF 应用程序中重现这一点,但一直无法这样做。 有人有想法么?我已用尽所有资源和 Google 技能,但无济于事。

谢谢

西蒙

编辑:如果相关,我在控制面板 -> 显示下将“更改所有项目的大小”设置为“大 - 150%”。使用 Windows 8,但在其他平台上也遇到过问题。

【问题讨论】:

  • 你能用一个示例 winforms 应用程序重现这个吗?我不能。
  • 很难解释。查找被吞下的异常,Debug + Exceptions,勾选 CLR 异常的 Throw 复选框。工具 + 选项,调试,常规,取消勾选 Just My Code。
  • 恐怕没有吞下的异常。我无法重现这个(尽管仍在尝试)。忘了说它是一个运行 WPF 应用程序的 WinForms 项目。

标签: wpf winforms propertygrid dpi


【解决方案1】:

原来导致 DPI 问题的原因是 System.Windows.Forms.WebBrowser,从我们的用户控件之一中注释掉/删除该控件,瞧,一切都很好。

这回答了我的问题,我的问题已解决。虽然我还是很想知道 为什么会发生这种情况。 (在找到这个之前,不要问我花了多少小时抓住稻草)

我可能会补充一点,虽然这已被证明是我的问题的根源, 我无法在较小的应用程序中重现它。

【讨论】:

    【解决方案2】:

    我遇到了完全相同的问题 - 对我来说最好的方法是关闭应用程序中的 DPI 感知。做到这一点的最好方法是这个 AssemblyInfo

    [assembly: DisableDpiAwareness]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-06
      • 2020-11-04
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      • 2022-12-08
      • 1970-01-01
      相关资源
      最近更新 更多