次の方法で共有


必要な場合にのみ、ScaleControl が呼び出される

スケーリングは通常、アプリケーションが SystemAware モードまたは PerMonitorV2 モードで実行されていて、モニターにアプリが設計されたマシンとは異なるカスタム DPI 設定がある場合にのみ必要です。 これらのシナリオでは、Windows フォーム ランタイムは、モニターのカスタム DPI 設定に基づいてスケール ファクターを計算し、新しいスケール ファクターで ScaleControl(SizeF, BoundsSpecified) を呼び出します。 パフォーマンスを向上させるために、 ScaleControl は、計算されたスケール ファクターが 1.0F 以外の場合にのみ呼び出されるようになりました (つまり、スケーリングが必要です)。 この変更は、 ScaleControl をオーバーライドし、オーバーライドでカスタム アクションを実行した場合に、アプリを中断する可能性があります。

導入されたバージョン

.NET 6 サービス 6.0.101

以前の動作

.NET 6 GA リリース以前のバージョンでは、アプリケーションのコンテナー コントロールでScaleControl(SizeF, BoundsSpecified)が呼び出されるたびに、仮想パブリック API PerformAutoScale()が呼び出されました。 つまり、スケーリングが必要かどうかに関係なく、レイアウトまたはフォントの変更が発生するたびにメソッドが呼び出されました。

新しい動作

.NET 6 サービス リリース以降、 ScaleControl(SizeF, BoundsSpecified) はフォームまたはコントロールをスケーリングする必要がある場合にのみ呼び出されます。 Windows フォーム ランタイムは、モニターのカスタム DPI 設定と、アプリケーションが設計されたモニターの DPI 設定に基づいてスケール ファクターを計算します。 ScaleControl(SizeF, BoundsSpecified) は、スケールファクターがスケーリングが必要であることを示す場合にのみ呼び出されます。

カテゴリの変更

この変更は ソースの互換性に影響します。

変更の理由

この変更は、パフォーマンスを向上させ、不要なレイアウトを回避するために行われました。

これらのオーバーライド可能なメソッドで、コードがカスタムのスケーリング以外のアクションを実行しているかどうかを確認します。

影響を受ける API