Home » 程式片段

[C#]製作專屬的 WebBrowser 瀏覽器

雖然現在的瀏覽器已經有很多種不同的系統,但若能開發一個量身訂做的瀏覽器時,在操作使用上會更得心應手吧!加上筆者最近寫了「開心農場瀏覽器」,因此就有些網友來信問說如何寫類似的程式。但是要從無到有開發出一個瀏覽器並不是簡單的事,不過若使用 .NET 內建的 WebBrowser 元件的話,保障在開發上能事半功倍。

一樣是先快速的把畫面排出來,這邊使用到 5 個 Button(按鈕) 來當做執行上一頁、下一頁、重新整理、停止及首頁用,接著再放上 Label(標籤)TextBox(文字輸入框)Button(按鈕) 用來讓使用者輸入網址後並前往用,當然最重要的 WebBrowser(瀏覽器) 可別忘記要一起放在 Form(表單) 上喔。

dotnet_webbrowser_1

在放置 WebBrowser(瀏覽器) 的時候要注意一下,它的 Dock 屬性預設是 Fill,它可會是佔滿整個 Form(表單) 的,因此先把它設成 None 後再來手動調整大小及位置。畫面都排版好之後,就讓我們開始來 DIY 專屬瀏覽器囉。

首先當 WebBrowser(瀏覽器) 執行時,筆者希望預設能連到某網址,所以就咱們就要在 Form(表單) 載入時來做設定:

1
2
3
4
private void Form1_Load(object sender, EventArgs e) {
	// 預設載入的頁面
	webBrowser1.Navigate("http://abgne.tw");
}

要讓 WebBrowser(瀏覽器) 連到某網址時可以用 Navigate(網址) 來執行動作。

接下來讓我們一口氣來完成上一頁、下一頁、重新整理、停止及首頁等功能:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private void backBtn_Click(object sender, EventArgs e) {
	// 上一頁
	webBrowser1.GoBack();
}
 
private void forwardBtn_Click(object sender, EventArgs e) {
	// 下一頁
	webBrowser1.GoForward();
}
 
private void refreshBtn_Click(object sender, EventArgs e) {
	// 重新整理
	webBrowser1.Refresh();
}
 
private void stopBtn_Click(object sender, EventArgs e) {
	// 停止
	webBrowser1.Stop();
}
 
private void homeBtn_Click(object sender, EventArgs e) {
	// 首頁
	webBrowser1.GoHome();
}

透過 WebBrowser(瀏覽器) 內建方法就能輕鬆達到各種指令,像是回首頁也只是 GoHome() 就可以囉。但我們所使用的是 .NET 所提供的元件,因此這邊的首頁設定就是跟 IE 瀏覽器一樣的

完成以上動作之後,再來要做的就是輸入要瀏覽的網址後並前往:

1
2
3
4
5
6
7
8
9
10
11
private void goBtn_Click(object sender, EventArgs e) {
	// 前往網址輸入框中的網址
	webBrowser1.Navigate(textBox1.Text);
}
 
private void textBox1_KeyUp(object sender, KeyEventArgs e) {
	// 如果在網址輸入框中按下 Enter 則前往網址輸入框中的網址
	if(e.KeyCode == Keys.Enter) {
		webBrowser1.Navigate(textBox1.Text);
	}
}

當按下前往的 Button(按鈕) 後就能使用 Navigate(網址) 來連到輸入框中所輸入的網址;除了透過按鈕前往之外,使用者也可能直接輸入完網址後就直接按下 Enter 鈕,所以筆者也針對輸入框的 KeyUP 事件加上 Enter 鈕的判斷。

目前寫到這邊已經算是完成一個簡單且基本的瀏覽器了,但不知道各位有沒有注意到當我們瀏覽到不同網頁時,我們的輸入框中的網址並沒有跟著改變呢?!筆者希望當網頁改變並載入完後就顯示新的網址,所以我們得在 WebBrowser(瀏覽器)DocumentCompleted 事件上加入指定的程式:

1
2
3
4
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
	// 把目前的網址顯示在網址輸入框中
	textBox1.Text = webBrowser1.Url.ToString();
}

現在整個完成後,就是一個較完整的瀏覽器囉~

dotnet_webbrowser_2

如果還要能控制網頁或是做一些能自動控制功能的話,當然得再這基礎上加上更多的程式功能才行。接下來會用實際的網頁範例來實做出來。

檔案描述
基本的範例檔案(免空) 開始下載
基本的範例檔案 開始下載

96 筆針對 [C#]製作專屬的 WebBrowser 瀏覽器 的迴響

  1. 您好,是否可以跟您請教一下:
    小弟我最近也在做類似的東西,目前我已完成登錄的部分。
    但登錄進去後,網頁會是個純粹只有一個SWF FILE的頁面。
    現在就卡在不知該如何去控制那個flash。
    例如,在flash裡頭有眾多個button,那我要怎樣才可以達到點擊我要的特定button呢?
    謝謝。

    • 你是用什麼編輯器?不過按下有個綠色箭頭鈕時, 應該會在專案的資料夾中輸出一個暫存的檔案才對。

  2. 請問有什麼方法可以做到
    把一個HTML檔案讀入webbroser裡,點其欄位,可講其欄位的html資訊送回Form的listbox上?
    可以指點一下嗎?

    • 應該是先求出你 swf 在整個螢幕的位置, 然後在找出滑鼠在整個螢幕的位置
      接著就是加加減減囉~

  3. 我嘗試用VB模仿 但到設定使用元件時 我按下Microsoft Internet Controls 與Microsoft Internet Trenster Control 6.0 他就說找不到: 'C:\WINDOWS\ststem32\ieframe.dll\1' 怎解決?

    • 你 IE 有裝 Flash 嗎..?像我之前寫的開心農場的程式, 一般使用者也是能正常使用的。所以表示 Flash 是能正常執行的~

發表迴響