LoginSignup
3
3

More than 3 years have passed since last update.

Windows Forms で PerMonitorV2 設定して動きを見てみた

Last updated at Posted at 2020-11-23

追記

最初 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% の画面

image.png

150% に持って行った状態

image.png

100% に再度移動させた状態

image.png

なんか 100% → 150% → 100% に持っていったら ListBox のフォントが大きくなった…

後述しますが、この変な動きは .NET Framework 4.7.2 で起きていて .NET Framework 4.8 にすると、この変な動きは治っていました。

DataGridView

100% で表示

image.png

150% に移動

image.png

100% に再度移動

image.png

DataGridView の中のチェックボックスの大きさがちょっとうまく行ってないなぁ。

.NET Framework 4.8 だとどうなる?

.NET Framework 4.8 で ListBox と DataGridView を試してみました。結果は…

100%
image.png

150%
image.png

100%
image.png

ListBox の変な動きはなおってましたが、DataGridView は特に内部のコントロールが大きくなるとかはなかったです。

まとめというか感想

このうまくいかない部分にきちんと対応しようと思ったらどうするのが正攻法なんだろう??
今回はとりあえず動きを見てみたので、次やるとしたら対処法の調査かな…

参考

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3