次の方法で共有


構成要素の追加Windows Forms

<add> 要素は、Windows フォーム アプリが、.NET Framework 4.7 以降のWindows Forms アプリに追加された機能をサポートするかどうかを指定する定義済みのキーを追加します。

構文

<System.Windows.Forms.ApplicationConfigurationSection>
  <add key="key-name" value="key-value" />
</System.Windows.Forms.ApplicationConfigurationSection>

属性と要素

以降のセクションでは、属性、子要素、および親要素について説明します。

属性

属性 説明
key 必須の属性です。 特定のWindows Formsカスタマイズ可能な機能に対応する定義済みのキー名。
value 必須の属性です。 keyに割り当てる値。

key 属性名と関連する値

key 名前 説明
"AnchorLayout.DisableSinglePassControlScaling" "true"|"false" 固定されたコントロールをシングル パスで拡大縮小するかどうかを示します。 シングル パスの拡大縮小を無効にする場合は "true"。それ以外の場合は false。 詳細については、「 解説 」の「シングルパススケーリング」セクションを参照してください。
"DpiAwareness" "PerMonitorV2"|"false" アプリケーションが DPI 対応であるかどうかを示します。 DPI 対応をサポートするには、キーを "PerMonitorV2" に設定します。それ以外の場合は、"false" に設定します。 DPI 認識はオプトイン機能です。Windows Formsの高 DPI サポートを利用するには、その値を "PerMonitorV2" に設定する必要があります。 詳細については、「解説」セクションを参照してください。
"CheckedListBox.DisableHighDpiImprovements" "true"|"false" CheckedListBox コントロールが、.NET Framework 4.7 で導入されたスケーリングとレイアウトの改善を利用するかどうかを示します。 拡大縮小とレイアウトの機能強化をオプトアウトする場合は "true"。それ以外の場合は "false"。
"DataGridView.DisableHighDpiImprovements" "true"|"false" .NET Framework 4.7 で導入された DataGridView コントロールのスケーリングとレイアウトの改善を制御するかどうかを示します。 DPI 対応をオプトアウトする場合は "true"。それ以外の場合は "false"。
"DisableDpiChangedMessageHandling" "true"|"false" DPI スケールの変更に関連するメッセージの受信をオプトアウトする場合は "true"。それ以外の場合は "false"。 詳細については、「解説」セクションを参照してください。
"EnableWindowsFormsHighDpiAutoResizing" "true"|"false" DPI スケーリングの変更により、Windows Forms アプリケーションのサイズが自動的に変更されるかどうかを示します。 自動サイズ変更を有効にする場合は "true"。それ以外の場合は false。
"Form.DisableSinglePassControlScaling" "true"|"false" Formが 1 つのパスでスケーリングされるかどうかを示します。 シングルパスの拡大縮小を無効にする場合は "true"。それ以外の場合は false。 詳細については、「 解説 」の「シングルパススケーリング」セクションを参照してください。
"MonthCalendar.DisableSinglePassControlScaling" "true"|"false" MonthCalendar コントロールを 1 つのパスでスケーリングするかどうかを示します。 シングルパスの拡大縮小を無効にする場合は "true"。それ以外の場合は false。 詳細については、「 解説 」の「シングルパススケーリング」セクションを参照してください。
"Toolstrip.DisableHighDpiImprovements" "true"|"false" ToolStrip コントロールが、.NET Framework 4.7 で導入されたスケーリングとレイアウトの改善を利用するかどうかを示します。 DPI 対応をオプトアウトする場合は "true"。それ以外の場合は "false"。

子要素

なし。

親要素

要素 説明
<System.Windows.Forms.ApplicationConfigurationSection> 新しいWindows Forms アプリケーション機能のサポートを構成します。

解説

.NET Framework 4.7 以降では、<System.Windows.Forms.ApplicationConfigurationSection> 要素を使用して、.NET Framework の最近のリリースで追加された機能を利用するようにWindows Forms アプリケーションを構成できます。

<System.Windows.Forms.ApplicationConfigurationSection> 要素を使用すると、1 つ以上の子<add> 要素を追加でき、それぞれが特定の構成設定を定義します。

Windows Forms高 DPI サポートの概要については、「 high DPI support in Windows Forms」を参照してください。

DpiAwareness

.NET Framework 4.7 以降の Windows 10 Creators Edition 以降のWindowsバージョンとターゲット バージョンの .NET Framework で実行されるWindows Forms アプリは、.NET Framework 4.7 で導入された高 DPI の機能強化を利用するように構成できます。 次の設定があります。

  • Windows Forms アプリケーションの起動後にユーザーが DPI またはスケール ファクターを変更する動的 DPI シナリオのサポート。

  • MonthCalendar コントロールや CheckedListBox コントロールなど、多数のWindows Forms コントロールのスケーリングとレイアウトが改善されました。

高 DPI 対応はオプトイン機能です。既定では、 DpiAwareness の値は false。 アプリケーション構成ファイルでこのキーの値を PerMonitorV2 に設定することで、DPI 対応のWindows Formsのサポートをオプトインできます。 DPI 対応が有効になっている場合は、すべての個別の DPI 機能も有効になります。 次の設定があります。

  • DPI によって変更されたメッセージ。 DisableDpiChangedMessageHandling キーによって制御されます。

  • 動的 DPI のサポート。 EnableWindowsFormsHighDpiAutoResizing キーによって制御されます。

  • 個々のForm コントロールのForm.DisableSinglePassControlScaling、アンカーコントロールのAnchorLayout.DisableSinglePassControlScalingキー、およびMonthCalendarコントロールのMonthCalendar.DisableSinglePassControlScalingキーによって制御されるシングルパスコントロールスケーリング

  • CheckedListBox コントロールのCheckListBox.DisableHighDpiImprovements キー、DataGridView コントロールのDataGridView.DisableHighDpiImprovements キー、およびToolStrip コントロールのToolstrip.DisableHighDpiImprovements キーによって制御される、高 DPI のスケーリングとレイアウトの改善。

DpiAwarenessPerMonitorV2 に設定することで提供される 1 つの既定のオプトイン設定は、通常、新しいWindows Forms アプリケーションに適しています。 ただし、対応するキーをアプリケーション構成ファイルに追加することで、個々の高 DPI の機能強化を無効にすることができます。 たとえば、動的な DPI サポートを除くすべての新しい DPI 機能を利用するには、アプリケーション構成ファイルに次を追加します。

<System.Windows.Forms.ApplicationConfigurationSection>
   <add key="DpiAwareness" value="PerMonitorV2" />
   <!-- Disable dynamic DPI support -->
   <add key="EnableWindowsFormsHighDpiAutoResizing" value="false" />
</System.Windows.Forms.ApplicationConfigurationSection>

通常は、プログラムで処理することを選択するため、特定の機能をオプトアウトします。

Windows Forms アプリケーションで高 DPI サポートを利用する方法の詳細については、「Windows Formsを参照してください。

AutoScaleMode

既定の AutoScaleMode.Font モードでは、現在のシステム フォント サイズに基づいてコントロールがスケーリングされます。 フォント メトリックは DPI レベルによって異なる可能性があるため、アプリがシステム DPI 対応またはモニターごとの v2 DPI 対応として実行されている場合、フォントのスケーリングは線形にならない可能性があります ( SystemAwarePerMonitorV2を参照)。 これにより、高さと幅の比率が一致しなくなる可能性があります。 AutoScaleMode.Dpi モードは常に線形であり、この制限はありません。

TextBoxLabelなどの特定のコントロールでは、AutoScaleModeの設定に関係なく、常にフォントのスケーリングが使用されます。 これらのコントロールごとの違いにより、特定の設計要件を知らなくても、どのモードが適切に動作するかを決めるのは必ずしも簡単ではありません。

.NET 8 以降では、Windows Forms アプリが PerMonitorV2 DPI 対応で実行される場合、最上位のウィンドウのサイズ設定では AutoScaleMode が考慮され、子コントロールのスケーリング方法との一貫性が向上します。 詳細については、「 最上位レベルのウィンドウスケーリング」を参照してください。

DisableDpiChangedMessageHandling

.NET Framework 4.7 以降、Windows Forms コントロールは DPI スケーリングの変更に関連する多数のイベントを発生させます。 これには、 DpiChangedAfterParentDpiChangedBeforeParent、および DpiChanged イベントが含まれます。 DisableDpiChangedMessageHandling キーの値によって、これらのイベントがWindows Forms アプリケーションで発生するかどうかが決まります。

シングルパスの拡大縮小

シングル パスまたは複数パスの拡大縮小は、ユーザー インターフェイスの認識される応答性と、ユーザー インターフェイス要素が拡大縮小されるときの視覚的な外観に影響します。 .NET Framework 4.7 以降では、Windows Formsではシングル パス スケーリングが使用されます。 以前のバージョンの .NET Framework では、スケーリングは複数のパスを通じて実行され、一部のコントロールは必要以上にスケーリングされていました。 シングルパスの拡大縮小は、アプリが古い動作に依存している場合にのみ無効にする必要があります。

関連項目