次の方法で共有


最上位フォームの最小サイズと最大サイズが DPI に従って拡大縮小される

Windows フォームの最上位フォームでは、HighDpiMode.PerMonitorV2 モードでの実行時に、その MinimumSizeMaximumSize の値がモニターの 1 インチあたりのドット数 (DPI) に従って拡大縮小されるようになりました。

導入されたバージョン

.NET 8 Preview 1

以前の動作

.NET 8 では、最上位フォームの MinimumSizeMaximumSize の値は、アプリケーションの DPI モードと、フォームがレンダリングされるモニターの DPI に関係なく、一定のままでした。 これにより、最上位フォームの拡大縮小に制限が発生する場合がありました。

.NET 7 でこの動作をオプトインすることもできます。 オプトインするには、「推奨アクション」セクションで説明されている System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi ランタイム構成オプションを設定します。

新しい動作

.NET 8 以降では、HighDpiMode.PerMonitorV2 モードで実行するとき、最上位フォームの MinimumSizeMaximumSize の値がモニターの DPI に従って拡大縮小されます。 アプリの動作は、次のように変化するおそれがあります。

  • フォームの最小サイズと最大サイズが変更されると、実行時の依存関係が影響を受けるおそれがあります。
  • 新しい MinimumSizeChanged イベントと MaximumSizeChanged イベントが発生するおそれがあります。
  • 拡大縮小されたフォームのサイズは、最小サイズと最大サイズの新しい制約値を持つようになります。

カテゴリの変更

この変更は、動作変更です。

変更理由

この変更は、高 DPI モニターでの Windows フォームのユーザー エクスペリエンスを向上させるための、広範な取り組みの一環です。 これにより、開発者がモニターの DPI を考慮することなく、最上位フォームの最小サイズと最大サイズを設定できるようになります。

この新しい動作が問題になる場合は、runtimeconfig.json ファイルで System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpifalse に設定すればオプトアウトできます。

runtimeconfig.template.json テンプレート ファイル:

{
   "configProperties": {
      "System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi": false
   }
}

[appname].runtimeconfig.json 出力ファイル:

{
   "runtimeOptions": {
      "configProperties": {
         "System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi": false
      }
   }
}

影響を受ける API

N/A

関連項目