最上位フォームの最小サイズと最大サイズが DPI に従って拡大縮小される
Windows フォームの最上位フォームでは、HighDpiMode.PerMonitorV2 モードでの実行時に、その MinimumSize と MaximumSize の値がモニターの 1 インチあたりのドット数 (DPI) に従って拡大縮小されるようになりました。
導入されたバージョン
.NET 8 Preview 1
以前の動作
.NET 8 では、最上位フォームの MinimumSize と MaximumSize の値は、アプリケーションの DPI モードと、フォームがレンダリングされるモニターの DPI に関係なく、一定のままでした。 これにより、最上位フォームの拡大縮小に制限が発生する場合がありました。
この動作は、.NET 7 でもオプトインできます。 オプトインするには、「推奨アクション」セクションで説明されている System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi
ランタイム構成オプションを設定します。
新しい動作
.NET 8 以降では、HighDpiMode.PerMonitorV2 モードで実行するとき、最上位フォームの MinimumSize と MaximumSize の値がモニターの DPI に従って拡大縮小されます。 アプリの動作は、次のように変化するおそれがあります。
- フォームの最小サイズと最大サイズが変更されると、実行時の依存関係が影響を受けるおそれがあります。
- 新しい MinimumSizeChanged イベントと MaximumSizeChanged イベントが発生するおそれがあります。
- 拡大縮小されたフォームのサイズは、最小サイズと最大サイズの新しい制約値を持つようになります。
カテゴリの変更
この変更は、動作変更です。
変更理由
この変更は、高 DPI モニターでの Windows フォームのユーザー エクスペリエンスを向上させるための、広範な取り組みの一環です。 これにより、開発者がモニターの DPI を考慮することなく、最上位フォームの最小サイズと最大サイズを設定できるようになります。
推奨アクション
この新しい動作が問題になる場合は、runtimeconfig.json ファイルで System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi
を false
に設定すればオプトアウトできます。
runtimeconfig.template.json テンプレート ファイル:
{
"configProperties": {
"System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi": false
}
}
[appname].runtimeconfig.json 出力ファイル:
{
"runtimeOptions": {
"configProperties": {
"System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi": false
}
}
}
影響を受ける API
N/A
関連項目
.NET