(いいえ、このコードベースを .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 よりも新しいものです。)