【.NET】WebBrowserコントロールで表示が変な時の対処法

.NET

.NETのWebBrowserコントロールはデフォルトではIE7互換表示モードで動作します。そのため、EdgeやIE11に合わせてサイトを作ると、表示がおかしくなります。その際の対処法をまとめました。

対処法をググると、2つ出てきます。

  1. HTMLにメタタグを入れる
  2. レジストリを修正する

自作のサイトを表示させるなら1ですが、外部のサイトなら2の方法が必要です。

ちなみに、MSの開発者であるPat Altimore氏のMS公式ブログを参考にしています(本家の開発者が言ってるなら安心…)。

やはり、デフォルトで WebBrowserコントロールは互換表示モードで動作する(IE7の表示仕様で動作)と仰ってますね。

. . .the WebBrowser control has a default configuration. By default, the WebBrowser control runs in compatibility view mode. Compatibility view mode is basically document mode 7.

https://docs.microsoft.com/ja-jp/archive/blogs/patricka/controlling-webbrowser-control-compatibility

で、以下、それぞれ2つの方法です。

HTMLにメタタグを入れる

これは簡単で、HTMLのヘッダ部分に下のタグを挿入するだけです。

<meta http-equiv="X-UA-Compatible" content="IE=edge">

たったこれだけです。

レジストリを編集する

当然ですが、レジストリの修正はリスクがありますので、自己責任で実施して下さい

① レジストリエディタを開き、以下のキーを開きます(FEATURE_BROWSER_EMULATIONがなければ作る)。

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION.

② FEATURE_BROWSER_EMULATION キーを選択、右クリックし、「新規」→「DWARD(32ビット)値 」をクリック

③ 値の名前にexeのファイル名を入れます(例:TestWebBrowser.exe)。

④ 10進数で値に「11001」を入力

ちなみに、値の数字がバージョンを表します。基本は「1101」で良いでしょう。