(不,我还不能将此代码库升级到 .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 更新。)