Visual Studio でWindows Formのデザイナで本来のフォームのサイズより大きいサイズで表示される

Visual StudioでWindows Formのデザイナのスケーリングが異なるサイズで表示される現象についての記事です。
多くの場合、Windows Formのデザイナで本来のサイズよりも大きく表示されます。

現象

Windows Formのデザイナでコントロールが通常よりも大きいサイズで表示されます。~ Visual Studio でWindows Formのデザイナで本来のフォームのサイズより大きいサイズで表示される:画像1

プロジェクトを実行して表示されるアプリケーションの表示は、正しいサイズで表示されています。
Visual Studio でWindows Formのデザイナで本来のフォームのサイズより大きいサイズで表示される:画像2

原因

マルチディスプレイ環境で、DPIの異なる高解像度ディスプレイを接続していると、それぞれのディスプレイで違ったDPIが選択されるため、上記の現象が発生します。

対策

すべてのディスプレイで固定のDPIを使用する設定に変更します。

手順:Windows 10

regeditコマンドを実行して、レジストリエディタを起動します。
Visual Studio でWindows Formのデザイナで本来のフォームのサイズより大きいサイズで表示される:画像3

Win8DispScaling の値の変更

レジストリエディタが起動します。以下のキー(ノード)を開きます。

HKEY_CURRENT_USER\Contorl Panel\Desktop

キー内の"Win8DispScaling"の値を確認します。デフォルトでは"0"になっています。
Visual Studio でWindows Formのデザイナで本来のフォームのサイズより大きいサイズで表示される:画像4

"Win8DispScaling"の値をダブルクリック、または右クリックのポップアップメニューの[修正]メニューを選択します。値の編集ダイアログが表示されるので、値を"1"に変更します。
Visual Studio でWindows Formのデザイナで本来のフォームのサイズより大きいサイズで表示される:画像5

変更できました。
Visual Studio でWindows Formのデザイナで本来のフォームのサイズより大きいサイズで表示される:画像6

LogPixels の値の設定

HKEY_CURRENT_USER\Contorl Panel\Desktop

キー内に"LogPixels"という名称の値を追加します。"HKEY_CURRENT_USER\Contorl Panel\Desktop"キーを選択し、右クリックしポップアップメニューの[新規]の[DWORD(32ビット)値]メニューをクリックします。
Visual Studio でWindows Formのデザイナで本来のフォームのサイズより大きいサイズで表示される:画像7

値が作成されますので、名称を"LogPixels"とします。
Visual Studio でWindows Formのデザイナで本来のフォームのサイズより大きいサイズで表示される:画像8

"LogPixels"の値をダブルクリック、または右クリックのポップアップメニューの[修正]メニューを選択します。値の編集ダイアログが表示されるので、値を"96"に変更します。
Visual Studio でWindows Formのデザイナで本来のフォームのサイズより大きいサイズで表示される:画像9

他の値を設定する場合は下記を参照してください。

DPI スケーリングレベル(DPI Scaling Level)レジストリの値(Registry Data Value)
小 : Smaller 100% (default)96
中 : Medium 125%120
大 : Larger 150%144
特大 : Extra Large 200%192
Custom 250% 240
Custom 300% 288
Custom 400% 384
Custom 500% 480



PC(Windows)を再起動します。再起動後、Visual Studioを起動し、プロジェクトを開きます。Windows Formのデザイナが正しいサイズ(スケーリング)で表示されるようになりました。
Visual Studio でWindows Formのデザイナで本来のフォームのサイズより大きいサイズで表示される:画像10

参考URL

http://www.tenforums.com/tutorials/5990-dpi-scaling-level-displays-change-windows-10-a.html

補足

上記の設定でもうまく動作しない場合、DesktopDPIOverride の値を作成し値を"0"に設定すると動作する場合があります。

レジストリエディタが起動します。以下のキー(ノード)を開きます。

HKEY_CURRENT_USER\Contorl Panel\Desktop

キーのノードを選択して右クリックし、ポップアップメニューの[新規]から[DWORD (32ビット)値]を選択します。
Visual Studio でWindows Formのデザイナで本来のフォームのサイズより大きいサイズで表示される:画像11

値が追加されますので、"DesktopDPIOverride" という名称に設定します。値を"0"にします。
Visual Studio でWindows Formのデザイナで本来のフォームのサイズより大きいサイズで表示される:画像12


AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2015-08-01
Copyright © 1995–2025 iPentec all rights reserverd.