C# 简单Web浏览器GUI 源代码
//ChromeWebBrowser.net - Chrome //下载 //https://sourceforge.net/projects/chromewebbrowse/files/ //http://blog.csdn.net/lllllllllluoyi/article/details/28716653 //http://webkit.org/ //http://www.chromium.org/blink //GeckoWebBrowser - Firefox //下载 //https://code.google.com/p/geckofx/ //https://developer.mozilla.org/en-US/docs/Mozilla/Gecko //http://www.cnblogs.com/zhuo/archive/2010/03/19/1690237. //html //http://blog.sina.com.cn/s/blog_4c7ae2a801015h0r.html // 需要手工添加对 "System.Web" 的引用 using System; using System.Text; using System.Windows.Forms; using System.Security.Permissions; using System.IO; using System.Web; using System.Net; namespace BrowserasIE { [PermissionSet(SecurityAction.Demand, Name = "FullTrust")] public partial class Form1 : Form { public Form1(string url) { InitializeComponent(); // 打开用户主页. // 以下事件在设计器中不可见. webBrowser1.CanGoBackChanged += new EventHandler(webBrowser1_CanGoBackChanged); webBrowser1.CanGoForwardChanged += new EventHandler(webBrowser1_CanGoForwardChanged); webBrowser1.DocumentTitleChanged += new EventHandler(webBrowser1_DocumentTitleChanged); webBrowser1.StatusTextChanged += new EventHandler(webBrowser1_StatusTextChanged); if (url == string.Empty) webBrowser1.GoHome(); else webBrowser1.Navigate(url); } private void saveAsToolStripMenuItem_Click(object sender, EventArgs e) { webBrowser1.ShowSaveAsDialog(); } private void pageSetupToolStripMenuItem_Click(object sender, EventArgs e) { webBrowser1.ShowPageSetupDialog(); } private void printToolStripMenuItem_Click(object sender, EventArgs e) { webBrowser1.ShowPrintDialog(); } private void printPreviewToolStripMenuItem_Click(object sender, EventArgs e) { webBrowser1.ShowPrintPreviewDialog(); } private void propertiesToolStripMenuItem_Click(object sender, EventArgs e) { webBrowser1.ShowPropertiesDialog(); } private void toolStripTextBox1_Click(object sender, EventArgs e) { toolStripTextBox1.SelectAll(); } private void toolStripTextBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { Navigate(toolStripTextBox1.Text); } } private void goButton_Click(object sender, EventArgs e) { Navigate(toolStripTextBox1.Text); } private void Navigate(String address) { if (String.IsNullOrEmpty(address)) return; if (address.Equals("about:blank")) return; if (address.IndexOf(".") > 0) { if (!address.StartsWith("http://") && !address.StartsWith("https://")) { address = "http://" + address; } try { webBrowser1.Navigate(new Uri(address)); } catch (System.UriFormatException) { return; } } else { string uri = "https://www.bing.com/search?q=" + HttpUtility.UrlEncode(toolStripTextBox1.Text, Encoding.UTF8); HttpWebRequest request = (HttpWebRequest) HttpWebRequest.Create(uri); HttpWebResponse response = (HttpWebResponse) request.GetResponse(); Stream stream = response.GetResponseStream(); StreamReader readerstream = new StreamReader(stream, Encoding.UTF8); webBrowser1.DocumentText = readerstream.ReadToEnd(); readerstream.Close(); stream.Close(); toolStripTextBox1.Text = uri; webBrowser1.Url = new Uri(uri); } } private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e) { toolStripTextBox1.Text = webBrowser1.Url.ToString(); } private void backButton_Click(object sender, EventArgs e) { webBrowser1.GoBack(); } private void webBrowser1_CanGoBackChanged(object sender, EventArgs e) { backButton.Enabled = webBrowser1.CanGoBack; } private void forwardButton_Click(object sender, EventArgs e) { webBrowser1.GoForward(); } private void webBrowser1_CanGoForwardChanged(object sender, EventArgs e) { forwardButton.Enabled = webBrowser1.CanGoForward; } private void stopButton_Click(object sender, EventArgs e) { webBrowser1.Stop(); } private void refreshButton_Click(object sender, EventArgs e) { // 如果地址为 "about:blank" , 避免刷新. if (!webBrowser1.Url.Equals("about:blank")) webBrowser1.Refresh(); } private void homeButton_Click(object sender, EventArgs e) { webBrowser1.GoHome(); } private void searchButton_Click(object sender, EventArgs e) { webBrowser1.GoSearch(); } private void printButton_Click(object sender, EventArgs e) { webBrowser1.Print(); } private void webBrowser1_StatusTextChanged(object sender, EventArgs e) { toolStripStatusLabel1.Text = webBrowser1.StatusText; } // 用当前网页文档的标题取代窗口标题. private void webBrowser1_DocumentTitleChanged(object sender, EventArgs e) { this.Text = webBrowser1.DocumentTitle; } private void exitToolStripMenuItem_Click(object sender, EventArgs e) { webBrowser1.Dispose(); Application.Exit(); } private void CodeToolStripMenuItem_Click(object sender, EventArgs e) { // 显示网页源码的对话框显示出来 CodeView dialogCodeView = new CodeView(); dialogCodeView.Text = webBrowser1.Url.ToString() + " - 原始源"; dialogCodeView.Show(); // 把网页源码显示在弹出的窗口中 // 首先解码 //StreamReader reader = new StreamReader(webBrowser1.DocumentStream, Encoding.GetEncoding("GB2312")); //StreamReader reader = new StreamReader(webBrowser1.DocumentStream, Encoding.UTF8); StreamReader reader = new StreamReader(webBrowser1.DocumentStream, Encoding.Default); dialogCodeView.sourceCode = reader.ReadToEnd(); reader.Close(); } // 单击程序中某个链接后会打开新窗口,此时就会执行NewWinow事件中的代码 // 通过此事件中的代码将打开新窗口中内容添加到本软件的webBrowser控件中显示 // 实现网页用我们自定义的浏览器显示 private void webBrowser1_NewWindow(object sender, System.ComponentModel.CancelEventArgs e) { string newURL = webBrowser1.StatusText; Form1 newform = new Form1(newURL); newform.toolStripStatusLabel1.Text = "正在打开网页 " + newURL + " ..."; newform.Show(); // 使其他浏览器无法捕获此事件 // 阻止了其他浏览器显示网页,而是采用我们自定义的浏览器来显示 e.Cancel = true; } } }