新思想

C# 简单Web浏览器GUI 源代码

C# 简单Web浏览器GUI 源代码

Browser

//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;
        }
    }
}

源程序下载

执行程序下载

posted on 2015-12-22 09:23  新思想  阅读(4824)  评论(3编辑  收藏  举报

导航