C#
WindowsForm
VisualStudio2017
WebBrowser

最もシンプルなWebブラウザを作ってみた

Visual Studio 2017 を起動したら,「新しいプロジェクト」から「Windows フォームアプリケーション(.NET Framework)」を選択し,新しいソリューションを作成する。

新しいビットマップ イメージ#01.png

標準のフォームに ComboBox コントロールと WebBrowser コントロールを配置し,レイアウトを整える。

新しいビットマップ イメージ#02.png

ComboBox インスタンス(comboBox1)の KeyDown イベントハンドラに,[Enter] キーが押されたら,テキストボックスの URL の Web ページが表示されるようにコードを記述する。WebBrowser インスタンスの Navigate メソッドは,引数に URL を与えることで Web ページを表示してくれる。その際,String 型の comboBox1.Text について new キーワードを用いて Uri 型にキャストする。

    private void comboBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
            webBrowser1.Navigate(new Uri(comboBox1.Text));
    }

新しいビットマップ イメージ#03.png

その他,ページ内のハイパーリンクをたどるなどして別のページに遷移したときには,ComboBoxに新しい URL を表示する。(webBrowser1_Navigated)

    private void comboBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
            webBrowser1.Navigate(new Uri(comboBox1.Text));
    }

    private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
    {
        if (webBrowser1.Url != null)
            comboBox1.Text = webBrowser1.Url.ToString();
    }

プログラムをコンパイル・実行すると,入力した URL の Web ページを表示するブラウザの動作について確認することができる。

新しいビットマップ イメージ#04_実行例.png

標準の WebBrowser コントロールは Internet Explorer 7 によるレンダリングにしか対応していない。そこで,最新の Internet Explorer 11, Edgeモードに対応させるには,レジストリを編集しないといけない。詳しくは,次の情報が頼りになる:

WebBrowser コントロールのInternet Explorerを最新のバージョンに変更する (C#プログラミング)
https://www.ipentec.com/document/csharp-change-webbrower-control-internet-explorer-version

そうすると, canvas など最新の HTML5 に対応した Web コンテンツを表示することができるようになる。

新しいビットマップ イメージ#05_実行例.png