Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

DanYuya
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away