首先,實現環境VS2013+windows10。
程序界面預覽:

浏覽器可以實現搜索,新建,關閉功能。簡單的基礎功能都能實現。
下面是代碼:
從上到下的講解:
Text = "我的winform浏覽器";
1)拖入ToolStirp控件。
2)編輯ToolStrip選項button。如下圖所示:

3)實例化webbrowser。有一個websbrows控件,但這裡是直接用代碼實現的。
//實例化WebBrowser WebBrowser wbActivityBrowser;
4)初始化菜單
1 //初始化值
2 //初始化go功能
3 private void cb_Url_SelectedIndexChanged(object sender, EventArgs e)
4 {
5 btn_Go_Click(null, null);
6 }
7 //初始化下一頁,並實現其功能。
8 private void btn_GoPrv_Click(object sender, EventArgs e)
9 {
10 wbActivityBrowser.GoBack();
11 }
12 //初始化上一頁,並實現其功能。
13 private void btn_GoNext_Click(object sender, EventArgs e)
14 {
15 wbActivityBrowser.GoForward();
16 }
17 //初始化刷新功能
18 private void btn_Refresh_Click(object sender, EventArgs e)
19 {
20 wbActivityBrowser.Refresh();
21 }
1)其中上一頁,下一頁和刷新功能實現是直接應用webBrowser控件的屬性。見上的代碼。
2)建立一個label和dropdownbutton。用於輸入網址。

dropdownbutton事件實現按鍵控制
//enter鍵輸入跳轉url
private void cb_Url_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == '\r')
btn_Go_Click(null, null);
}
3)跳轉功能。
1 //跳轉button
2 private void btn_Go_Click(object sender, EventArgs e)
3 {
4 string strUrl = cb_Url.Text;
5 if (strUrl=="")
6 {
7 OpenFileDialog openFileDialog1 = new OpenFileDialog();
8 openFileDialog1.Filter = "文本文件|*.txt|網頁|*.htm*";
9 var s = openFileDialog1.ShowDialog();
10 if (s == System.Windows.Forms.DialogResult.OK)
11 {
12 strUrl = openFileDialog1.FileName;
13 }
14 }
15 wbActivityBrowser.Navigate(strUrl);
16 }
4)新建頁面功能
1 //新建頁面
2 private void btn_New_Click(object sender, EventArgs e)
3 {
4 TabPage tbPage = new TabPage();
5 tbPage.Text = "新建頁面";
6 WebBrowser wbNewWebBrz = new WebBrowser();
7 wbNewWebBrz.Dock = DockStyle.Fill;
8 wbNewWebBrz.Navigated += new WebBrowserNavigatedEventHandler(webBrowser1_Navigated);
9 wbNewWebBrz.ProgressChanged += new WebBrowserProgressChangedEventHandler(webBrowser1_ProgressChanged);
10 tbPage.Controls.Add(wbNewWebBrz);
11 tabControl1.TabPages.Add(tbPage);
12 tabControl1.SelectedTab = tbPage;
13 }
5)關閉功能
1 //關閉頁面
2 private void btn_Close_Click(object sender, EventArgs e)
3 {
4 TabPage tpPage = tabControl1.SelectedTab;
5 if (tpPage != null)
6 tabControl1.TabPages.Remove(tpPage);
7 if (tabControl1.TabPages.Count == 0)
8 this.Close();
9 }
1)拖入tabControl控件。tabControl用於顯示網頁內容。
1 private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
2 {
3 TabPage tpPage = tabControl1.SelectedTab;
4 if (tpPage != null)
5 wbActivityBrowser = (WebBrowser)tpPage.Controls[0];
6 }
2)將url的title顯示在tab上
//將url的title顯示在tab上
private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
TabPage tpPage = tabControl1.SelectedTab;
tpPage.Text = wbActivityBrowser.DocumentTitle;
}
控件:一個toolstrip和一個label。
1 //web狀態
2 private void webBrowser1_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
3 {
4 if(wbActivityBrowser.Url != null)
5 cb_Url.Text = wbActivityBrowser.Url.ToString();
6 switch (wbActivityBrowser.ReadyState)
7 {
8 case WebBrowserReadyState.Complete:
9 lbl_status.Text = "完成";
10 break;
11 case WebBrowserReadyState.Interactive:
12 lbl_status.Text = "部分完成";
13 break;
14 case WebBrowserReadyState.Loaded:
15 lbl_status.Text = "已初始化";
16 break;
17 case WebBrowserReadyState.Loading:
18 lbl_status.Text = "正在加載";
19 break;
20 case WebBrowserReadyState.Uninitialized:
21 lbl_status.Text = "未加載";
22 break;
23 }
24 }
//啟動浏覽器的配置
private void Form1_Load(object sender, EventArgs e)
{
StreamReader dr = new StreamReader("config.text");
string strUrl = "";
while ((strUrl = dr.ReadLine()) != null)
{
btn_New_Click(null, null);
cb_Url.Text = strUrl;
tabControl1_SelectedIndexChanged(null, null);
btn_Go_Click(null, null);
webBrowser1_ProgressChanged(null, null);
}
dr.Close();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
//將每個選項卡浏覽器當前網址保存到文本文件
StreamWriter sw = new StreamWriter("config.text");
foreach (TabPage tp in tabControl1.TabPages)
{
WebBrowser wb = (WebBrowser)tp.Controls[0];
if (wb.Url != null)
sw.WriteLine(wb.Url.ToString());
}
sw.Close();
}
其中,把config.text文件放入bin目錄下,內容為網址。功能實現其打開首頁網址。可以自定義你的程序啟動的網址。

1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Diagnostics;
6 using System.Drawing;
7 using System.IO;
8 using System.Linq;
9 using System.Text;
10 using System.Threading.Tasks;
11 using System.Windows.Forms;
12
13 namespace Browsers
14 {
15 public partial class Form1 : Form
16 {
17
18 public Form1()
19 {
20 InitializeComponent();
21 Text = "我的winform浏覽器";
22 }
23 //默認浏覽器打開鏈接
24 private void button1_Click(object sender, EventArgs e)
25 {
26 Process.Start("www.baidu.com");
27 }
28
29
30
31 //跳轉button
32 private void btn_Go_Click(object sender, EventArgs e)
33 {
34 string strUrl = cb_Url.Text;
35 if (strUrl=="")
36 {
37 OpenFileDialog openFileDialog1 = new OpenFileDialog();
38 openFileDialog1.Filter = "文本文件|*.txt|網頁|*.htm*";
39 var s = openFileDialog1.ShowDialog();
40 if (s == System.Windows.Forms.DialogResult.OK)
41 {
42 strUrl = openFileDialog1.FileName;
43 }
44 }
45 wbActivityBrowser.Navigate(strUrl);
46 }
47
48 //初始化值
49 //初始化go功能
50 private void cb_Url_SelectedIndexChanged(object sender, EventArgs e)
51 {
52 btn_Go_Click(null, null);
53 }
54 //初始化下一頁,並實現其功能。
55 private void btn_GoPrv_Click(object sender, EventArgs e)
56 {
57 wbActivityBrowser.GoBack();
58 }
59 //初始化上一頁,並實現其功能。
60 private void btn_GoNext_Click(object sender, EventArgs e)
61 {
62 wbActivityBrowser.GoForward();
63 }
64 //初始化刷新功能,並實現其功能。
65 private void btn_Refresh_Click(object sender, EventArgs e)
66 {
67 wbActivityBrowser.Refresh();
68 }
69
70 //將url的title顯示在tab上
71 private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
72 {
73 TabPage tpPage = tabControl1.SelectedTab;
74 tpPage.Text = wbActivityBrowser.DocumentTitle;
75
76 }
77 //web狀態
78 private void webBrowser1_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
79 {
80 if(wbActivityBrowser.Url != null)
81 cb_Url.Text = wbActivityBrowser.Url.ToString();
82 switch (wbActivityBrowser.ReadyState)
83 {
84 case WebBrowserReadyState.Complete:
85 lbl_status.Text = "完成";
86 break;
87 case WebBrowserReadyState.Interactive:
88 lbl_status.Text = "部分完成";
89 break;
90 case WebBrowserReadyState.Loaded:
91 lbl_status.Text = "已初始化";
92 break;
93 case WebBrowserReadyState.Loading:
94 lbl_status.Text = "正在加載";
95 break;
96 case WebBrowserReadyState.Uninitialized:
97 lbl_status.Text = "未加載";
98 break;
99 }
100 }
101
102
103 //啟動浏覽器的配置
104 private void Form1_Load(object sender, EventArgs e)
105 {
106 StreamReader dr = new StreamReader("config.text");
107 string strUrl = "";
108 while ((strUrl = dr.ReadLine()) != null)
109 {
110 btn_New_Click(null, null);
111 cb_Url.Text = strUrl;
112 tabControl1_SelectedIndexChanged(null, null);
113 btn_Go_Click(null, null);
114 webBrowser1_ProgressChanged(null, null);
115 }
116 dr.Close();
117 }
118 //實例化WebBrowser
119 WebBrowser wbActivityBrowser;
120 private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
121 {
122 TabPage tpPage = tabControl1.SelectedTab;
123 if (tpPage != null)
124 wbActivityBrowser = (WebBrowser)tpPage.Controls[0];
125 }
126 //enter鍵輸入跳轉url
127 private void cb_Url_KeyDown(object sender, KeyEventArgs e)
128 {
129 if (e.KeyValue == '\r')
130 btn_Go_Click(null, null);
131 }
132
133 private void Form1_FormClosing(object sender, FormClosingEventArgs e)
134 {
135 //將每個選項卡浏覽器當前網址保存到文本文件
136 StreamWriter sw = new StreamWriter("config.text");
137 foreach (TabPage tp in tabControl1.TabPages)
138 {
139 WebBrowser wb = (WebBrowser)tp.Controls[0];
140 if (wb.Url != null)
141 sw.WriteLine(wb.Url.ToString());
142 }
143 sw.Close();
144 }
145
146 //新建頁面
147 private void btn_New_Click(object sender, EventArgs e)
148 {
149 TabPage tbPage = new TabPage();
150 tbPage.Text = "新建頁面";
151 WebBrowser wbNewWebBrz = new WebBrowser();
152 wbNewWebBrz.Dock = DockStyle.Fill;
153 wbNewWebBrz.Navigated += new WebBrowserNavigatedEventHandler(webBrowser1_Navigated);
154 wbNewWebBrz.ProgressChanged += new WebBrowserProgressChangedEventHandler(webBrowser1_ProgressChanged);
155 tbPage.Controls.Add(wbNewWebBrz);
156 tabControl1.TabPages.Add(tbPage);
157 tabControl1.SelectedTab = tbPage;
158 }
159
160
161 //關閉頁面
162 private void btn_Close_Click(object sender, EventArgs e)
163 {
164 TabPage tpPage = tabControl1.SelectedTab;
165 if (tpPage != null)
166 tabControl1.TabPages.Remove(tpPage);
167 if (tabControl1.TabPages.Count == 0)
168 this.Close();
169 }
170
171 }
172 }
View Code