【C#】簡単なブラウザを作ってみよう
WebBrowser
C#にはWebBrowserコントロールというものがあり、これを使うことで簡単なブラウザを作ることができます。
- 新しいプロジェクトの作成から、Windows フォームアプリケーション(.NET Framework)を選択します。
- 作成
- Buttonを2つ左上に配置し、その横にTextBoxを配置します。
- TextBoxのAnchorプロパティをLeft,Top,Rightにします。
- 下全体にWebBrowserを配置します。
- WebBrowserのAnchorプロパティをLeft,Top,Right,Bottomに設定します。
TextBoxのイベント
- Visual Studioでは、各コントロールのイベントをプロパティウィンドウの⚡マークを選択する事で表示することができます。
- 今回はTextBoxのキーイベント「KeyPress」を使いたいので「KeyPress」の右の空欄をダブルクリックします。
- Enterキーが押された時にWebBrowserがTextBoxのURLをブラウズするようにコードを書きます。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Enter) { webBrowser1.Navigate(textBox1.Text); } }
戻ると進むの実装
「<<」と「>>」のボタンをダブルクリックすると、各ボタンを押した時のイベントが追加されます。
private void button1_Click(object sender, EventArgs e) { } private void button2_Click(object sender, EventArgs e) { }
ここに戻ると進むを押した時の処理を書いていきます。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Enter) { try { webBrowser1.Navigate(textBox1.Text); } catch (Exception ex) { MessageBox.Show(ex.Message, ex.GetType().ToString()); } } } private void button1_Click(object sender, EventArgs e) { if(webBrowser1.CanGoBack) webBrowser1.GoBack(); } private void button2_Click(object sender, EventArgs e) { if (webBrowser1.CanGoForward) webBrowser1.GoForward(); }
リンクをクリックしたときにTextBoxの文字が変わるようにしたい
Navigate完了のイベントを拾って、その時のWebBrowserのURLをテキストボックスに表示してやれば実現できそうです。
- Navigatedイベントの追加
- WebBrowserのURLをTextBoxに表示
private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e) { textBox1.Text = webBrowser1.Url.ToString(); }
今回のコード
(本当はListを使ってGoBack、GoForwardを実装するつもりだったんですけど、WebBrowserに機能がありました。てへっ)
public Form1() { InitializeComponent(); } private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Enter) { try { webBrowser1.Navigate(textBox1.Text); } catch (Exception ex) { MessageBox.Show(ex.Message, ex.GetType().ToString()); } } } private void button1_Click(object sender, EventArgs e) { if(webBrowser1.CanGoBack) webBrowser1.GoBack(); } private void button2_Click(object sender, EventArgs e) { if (webBrowser1.CanGoForward) webBrowser1.GoForward(); } private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e) { textBox1.Text = webBrowser1.Url.ToString(); }