追記
最初 ListBox での動きが変だったのですが .NET Framework 4.7 系から .NET Framework 4.8 に上げたらなおりました。
試したこと
- Windows Forms アプリを新規作成して app.manifest を追加
- supportedOS タグの Windows 10 のコメントアウトを外す
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
- App.config で PerMoniterV2 の設定を追加
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
</System.Windows.Forms.ApplicationConfigurationSection>
</configuration>
- Form のフォントを Yu Gothic UI, 9pt に変更
- Form の AutoScaleMode を Font から Dpi に変更
- ListBox や DataGridView なんかを置いた画面を適当に作成
- デバッガーにアタッチしない状態で実行して動きを確認
結果
ListBox のある画面
拡大率 100% の画面
150% に持って行った状態
100% に再度移動させた状態
なんか 100% → 150% → 100% に持っていったら ListBox のフォントが大きくなった…
後述しますが、この変な動きは .NET Framework 4.7.2 で起きていて .NET Framework 4.8 にすると、この変な動きは治っていました。
DataGridView
100% で表示
150% に移動
100% に再度移動
DataGridView の中のチェックボックスの大きさがちょっとうまく行ってないなぁ。
.NET Framework 4.8 だとどうなる?
.NET Framework 4.8 で ListBox と DataGridView を試してみました。結果は…
ListBox の変な動きはなおってましたが、DataGridView は特に内部のコントロールが大きくなるとかはなかったです。
まとめというか感想
このうまくいかない部分にきちんと対応しようと思ったらどうするのが正攻法なんだろう??
今回はとりあえず動きを見てみたので、次やるとしたら対処法の調査かな…