LotosLabo

プログラミング技術とか気になった情報を載せていきます

C#でGUIプログラミング 簡易ウェブブラウザの作成

C#GUIプログラミングをやったことなかったので練習も兼ねて作りました。


(全体像)
f:id:lo25131:20140126033058j:plain


アイコンはPhotoshopで適当に作りました

f:id:lo25131:20140126033157p:plainf:id:lo25131:20140126033158p:plainf:id:lo25131:20140126033159p:plainf:id:lo25131:20140126033201p:plainf:id:lo25131:20140126033202p:plain


画面の左から
○戻る
○進む
○更新
○ホームボタン
○URL入力画面
○入力したURLに移動

アイコンの画像などはプロジェクトファイルのbin/Debugファイルに入れておきます。

それではコードを紹介します。

/*<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();
            }
        }

    }
}