KB4497934を適用するとレイアウトが崩れる? [とりあえず解決]

木曜日 , 30, 5月 2019 Leave a comment

KB4497934を適用するとレイアウトが崩れる?」の続きです。

検索キーワードが絞り込めたので、改めてインターネットを検索してみるとQiita@tfukumoriさんの記事が見つかりました。

2019/4/26のWindows 新元号(令和)対応パッチでのフォント変更?での不具合調査(Windows 7, 10 1803, .NET, Excel)』 (https://qiita.com/tfukumori/items/a1fb3984a3488875515e)

@tfukumoriさんの記事を読んでいくと自分が遭遇している現象と同じようです。

自分の場合、KB4497934で現象が起きましたが、俗に「令和対応」と呼ばれるパッチがリリースされたあたりから発生しているようです。

さらに読み進めていくと、この現象を解決するための修正パッチが配布されているようです。

Windows Updateでの修正(5/15追記)

Windows Update 定例パッチ(Bリリース、アメリカ第2火曜日の翌日、日本では5/15)で修正されたようです。

えっ、自分の環境では解決できていない…

ページに書いてあった情報をヒントに試してみたところ、解決ができたので修正方法を以下に記載します。

まず、ヒントになった部分から

(2)Form, UserControlのAutoScaleModeにDpiを設定する

Form, UserControlのAutoScaleModeがFont(初期値)の場合に問題が起こります。こちらをDpiに変更します。

フォームのAutoScaleModeプロパティを確認してみると初期値のままSystem.Windows.Forms.AutoScaleMode.Fontになっていました。
これをSystem.Windows.Forms.AutoScaleMode.Dpiに変更してみます。
たしかにフォームが意図したレイアウトで表示されるようになりました。

すべての画面を同じように修正してみると、すべて解決とはならず大きくレイアウトが崩れてしまっている画面が出てきます。
そこで、System.Windows.Forms.AutoScaleMode.Noneを指定してみたところ、今度はすべての画面でレイアウトが崩れることなく意図したとおりに表示されています。

AutoScaleModeプロパティを、System.Windows.Forms.AutoScaleMode.NoneまたはSystem.Windows.Forms.AutoScaleMode.Dpiに変更してみる。

というのが有効そうです。

本当はWindows Updateできちんとしたアップデートが配信されるのが望ましいのですが、公式対応が配信されるよりも前になんとかしなくちゃいけない方も少なくないと思いますので、スケール対応の問題がなければ有効だと思います。

一括置換のために検索文字列と置換文字列を記載します。

  • レイアウトが崩れたときのAutoScaleModeプロパティの設定
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
  • レイアウトが崩れなくなったときのAutoScaleModeプロパティの設定
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None