C#でGUIプログラミングをやったことなかったので練習も兼ねて作りました。
VisualStudioのコントロール(ボタン、テキストボックス、ラベル)の配置を
デザイナーを使い、ドラッグ&ドロップで行うのではなく、全てプログラムで行うことです。
とある企業のインターンでVisualBasic(VB)でウェブブラウザを一時間ほどで作ったことはありますので作り方は大体わかっています。
結構簡単にできるのでプログラミングやるの初めてだ!
という人でも簡単に作れるので是非作ってみてください。
今回紹介するのはGUIプログラミングの方です。
※コードが汚いのはご了承ください
(全体像)
アイコンはPhotoshopで簡単に作りました
画面の左から
○戻る
○進む
○更新
○ホームボタン
○URL入力画面
○入力したURLに移動
それではコードを紹介します。
/*<program.cs : C#>*/ using System; using System.Drawing; using System.Windows.Forms; namespace Webbrowser { class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new Form1()); } } class Form1 : Form { // 登録 WebBrowser webBrowser1; TextBox Urltext; Button move_btn, back_btn, next_btn, refresh_btn, home_btn; public Form1() { // ウェブブラウザ配置 webBrowser1 = new WebBrowser() { Location = new Point(0, 55), Size = new Size(1380, 790), }; // URLテキストボックス Urltext = new TextBox() { Location = new Point(260, 10), Size = new Size(1020, 40), Font = new Font("MS ゴシック", 18, FontStyle.Regular), BackColor = Color.White, }; // 移動ボタン move_btn = new Button() { Location = new Point(1300, 10), Size = new Size(40, 35), BackColor = Color.DarkBlue, Image = System.Drawing.Image.FromFile(@"move.png"), FlatStyle = FlatStyle.Popup, }; // 前へボタン back_btn = new Button() { Location = new Point(10, 10), Size = new Size(40, 35), BackColor = Color.DarkBlue, Image = System.Drawing.Image.FromFile(@"back.png"), FlatStyle = FlatStyle.Popup, }; // 次へボタン next_btn = new Button() { Location = new Point(70, 10), Size = new Size(40, 35), BackColor = Color.DarkBlue, Image = System.Drawing.Image.FromFile(@"next.png"), FlatStyle = FlatStyle.Popup, }; // 更新ボタン refresh_btn = new Button() { Location = new Point(130, 10), Size = new Size(40, 35), BackColor = Color.DarkBlue, Image = System.Drawing.Image.FromFile(@"refresh.png"), FlatStyle = FlatStyle.Popup, }; // ホームボタン home_btn = new Button() { Location = new Point(190, 10), Size = new Size(40, 35), BackColor = Color.DarkBlue, Image = System.Drawing.Image.FromFile(@"home.png"), FlatStyle = FlatStyle.Popup, }; //配置 this.Controls.Add(webBrowser1); this.Controls.Add(Urltext); this.Controls.Add(move_btn); this.Controls.Add(back_btn); this.Controls.Add(next_btn); this.Controls.Add(refresh_btn); this.Controls.Add(home_btn); // ウインドウサイズ this.ClientSize = new Size(1380, 840); // ウインドウポジション this.StartPosition = FormStartPosition.Manual; // ウインドウサイズを変更しない this.FormBorderStyle = FormBorderStyle.FixedSingle; // 最大化ボタンを非表示 this.MaximizeBox = false; // ウインドウ名前 this.Text = "オリジナルブラウザ"; // スタートページ string FirstUrl = "http://www.google.co.jp/"; Urltext.Text = FirstUrl; webBrowser1.Navigate(FirstUrl); // ボタンイベントハンドラ登録 move_btn.Click += new EventHandler(move_btn_Click); back_btn.Click += new EventHandler(back_btn_Click); next_btn.Click += new EventHandler(next_btn_Click); refresh_btn.Click += new EventHandler(refresh_btn_Click); home_btn.Click += new EventHandler(home_btn_Click); // webブラウザイベントハンドラ webBrowser1.Navigated += new WebBrowserNavigatedEventHandler(webBrowser1_Navigated); // テキストボックスイベントハンドラ Urltext.KeyDown += new KeyEventHandler(Urltext_KeyDown); // マウスオーバー、リーブイベントハンドラ move_btn.MouseHover += new EventHandler(move_btn_MouseHover); move_btn.MouseLeave += new EventHandler(move_btn_MouseLeave); refresh_btn.MouseHover += new EventHandler(refresh_btn_MouseHover); refresh_btn.MouseLeave += new EventHandler(refresh_btn_MouseLeave); next_btn.MouseHover += new EventHandler(next_btn_MouseHover); next_btn.MouseLeave += new EventHandler(next_btn_MouseLeave); back_btn.MouseHover += new EventHandler(back_btn_MouseHover); back_btn.MouseLeave += new EventHandler(back_btn_MouseLeave); home_btn.MouseHover += new EventHandler(home_btn_MouseHover); home_btn.MouseLeave += new EventHandler(home_btn_MouseLeave); // バックカラーをダークブルーに this.BackColor = System.Drawing.Color.DarkBlue; } // マウスオーバー、リーブイベント private void home_btn_MouseHover(object sender, EventArgs e) { home_btn.BackColor = Color.SkyBlue; } private void home_btn_MouseLeave(object sender, EventArgs e) { home_btn.BackColor = Color.DarkBlue; } private void refresh_btn_MouseHover(object sender, EventArgs e) { refresh_btn.BackColor = Color.SkyBlue; } private void refresh_btn_MouseLeave(object sender, EventArgs e) { refresh_btn.BackColor = Color.DarkBlue; } private void next_btn_MouseHover(object sender, EventArgs e) { next_btn.BackColor = Color.SkyBlue; } private void next_btn_MouseLeave(object sender, EventArgs e) { next_btn.BackColor = Color.DarkBlue; } private void back_btn_MouseHover(object sender, EventArgs e) { back_btn.BackColor = Color.SkyBlue; } private void back_btn_MouseLeave(object sender, EventArgs e) { back_btn.BackColor = Color.DarkBlue; } private void move_btn_MouseHover(object sender, EventArgs e) { move_btn.BackColor = Color.SkyBlue; } private void move_btn_MouseLeave(object sender, EventArgs e) { move_btn.BackColor = Color.DarkBlue; } // マウスクリックイベント private void back_btn_Click(object sender, EventArgs e) { // 戻る webBrowser1.GoBack(); } private void next_btn_Click(object sender, EventArgs e) { //進む webBrowser1.GoForward(); } private void refresh_btn_Click(object sender, EventArgs e) { //更新 webBrowser1.Refresh(); } private void home_btn_Click(object sender, EventArgs e) { //ホーム string FirstUrl = "http://www.google.co.jp/"; webBrowser1.Navigate(FirstUrl); } // ウェブブラウザの設定 private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e) { // フォームのタイトルをナビゲートしたサイトのタイトルを設定 this.Text = webBrowser1.Document.Title.ToString(); //URL入力エリアにナビゲートしたサイトのURLを設定 this.Urltext.Text = webBrowser1.Url.ToString(); } // 移動ボタン private void move_btn_Click(object sender, EventArgs e) { // 入力したURLに移動する try { string url = Urltext.Text; // "http://"が無ければ補完 if (Urltext.Text.StartsWith("http://") == false) { url = "http://" + url; } // 移動 webBrowser1.Navigate(url); } catch { } } // テキストボックス private void Urltext_KeyDown(object sender, KeyEventArgs e) { //エンターキー if (e.KeyCode == Keys.Enter) { //移動ボタン入力と同じ move_btn.PerformClick(); } } } }
アイコンの画像などはプロジェクトファイルのbin/Debugファイルに入れておきます。
コードがちょっと長いですね…
もっと短いコードで負荷がかからないきれいなコードを書けるようになりたいです!