0

(不,我还不能将此代码库升级到 .NET Core 或更高版本。)

我有一个主要是 Windows 窗体和部分 WPF 的应用程序。当字体大小在运行时发生变化时,WPF 会做出正确反应。相反,除非我重新启动,否则 Windows 窗体似乎甚至没有意识到任何改变。例如,属性Control.DeviceDpi直到 4.7 才引入)显示启动时准确的值,而不是当前值。

我的app.manifest有:

  <asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>True/PM</dpiAware>
    </asmv3:windowsSettings>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
      <dpiAwareness>PerMonitorV2, PerMonitor</dpiAwareness>
    </asmv3:windowsSettings>
  </asmv3:application>

我的app.config有:

    <appSettings>
        <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
    </appSettings>

但是 4.7确实引入了一个Control.DpiChanged事件,只是它似乎永远不会触发。

但是,如果我覆盖WndProc并收听WM_DPICHANGED,那确实会触发。此代码似乎表明该事件应该触发。

显然,这不是因为这段代码有条件地将其关闭。但我不确定我不符合哪个部分的资格。(我在 Windows 10 21H1 上,比 RS2 更新。)

4

0 回答 0