[转载]手把手教你打造c#多线程多页面浏览器(连载一) – qihangkeji – 博客园.
现在浏览器真的太多了, 微软的Internet Explorer、Mozilla的Firefox、Apple的Safari、Opera、HotBrowser、Google Chrome、 浏览器GreenBrowser浏览器、Avant 浏览器、财猫省钱浏览器、360安全浏览器、360极速浏览器、世界之窗、腾讯TT、搜狗浏览器、傲游浏览器、百度浏览器众多浏览器让人眼花缭乱
作为技术人员,我们知道只有几种内核
基于Gecko排版引擎
Mozilla Firefox(火狐浏览器)
Mozilla Firefox现在是市场占有率第三的浏览器,仅次于微软的internet explorer和google的chrome。
基于WebKit排版引擎
谷歌浏览器(Chrome)
Chrome是由Google公司开发的网页浏览器,浏览速度在众多浏览器中走在前列,属于高端浏览器。采用BSD许可证授权并开放源代码,开源计划名为Chromium。
基于Trident排版引擎
微软Internet Explorer
我们中的大多数人都在使用IE,这要感谢它对web站点强大的兼容性。最新的Internet Explorer 9.0.2包括HTML5、CSS3以及大量的安全更新。
今天我们要做的的就是基于ie内核的C#浏览器
首先我们介绍一下 WebBrowser
使用 WebBrowser 控件可以在 Windows 窗体应用程序中承载网页以及支持浏览器的其他文档。例如,可以使用 WebBrowser 控件在应用程序中提供基于 HTML 的集成用户帮助或 Web 浏览功能。此外,还可以使用 WebBrowser 控件向 Windows 窗体客户端应用程序添加基于 Web 的现有控件。先介绍一下简单操作
private void toolStripButton2_Click(object sender, EventArgs e) //后退
{
webBrowser.GoBack();
}
private void toolStripButton3_Click(object sender, EventArgs e) //前进
{
webBrowser.GoForward();
}
private void toolStripButton4_Click(object sender, EventArgs e) //刷新
{
if (!((CustomTabpage)(this.tabControl1.SelectedTab)).webBrowser.Url.Equals(“about:blank”))
{
webBrowser.Refresh();
}
}
private void toolStripButton5_Click(object sender, EventArgs e) //停止
{
webBrowser.Stop();
}
private void toolStripButton6_Click_1(object sender, EventArgs e) //主页
{
webBrowser.GoHome();
}
//地址跳转
private void Navigate(String address)
{ if (String.IsNullOrEmpty(address))
return;
if (address.Equals(“about:blank”)) return;
if (!address.StartsWith(“http://”) && !address.StartsWith(“https://”))
{ address = “http://” + address;
} try { webBrowser1.Navigate(new Uri(address));
} catch (System.UriFormatException) { return; } }
private void 属性ToolStripMenuItem_Click(object sender, EventArgs e) //菜单栏-属性
{
try
{
webBrowser.ShowPropertiesDialog();
}
catch (System.Exception ex)
{
throw ex;
}
}
private void 页面设置ToolStripMenuItem_Click(object sender, EventArgs e) //菜单栏-页面设置
{
try
{
webBrowser.ShowPageSetupDialog();
}
catch (System.Exception ex)
{
throw ex;
}
}
private void 打印预览ToolStripMenuItem_Click(object sender, EventArgs e) //菜单栏-打印预览
{
try
{
webBrowser.ShowPrintPreviewDialog();
}
catch (System.Exception ex)
{
throw ex;
}
}
private void 打印ToolStripMenuItem_Click(object sender, EventArgs e) //菜单栏-打印
{
try
{
webBrowser.ShowPrintDialog();
}
catch (System.Exception ex)
{
throw ex;
}
}
WebBrowser 主要事件
BeforeNavigate2
在导航之前发生. (该事件并不在不刷新页面的时候发生)
DocumentComplete
当整个文档完全完成装载时发生.如果你刷新页面, 此事件并不激发.
DownloadBegin
当一个下载项目开始时候发生
DownloadComplete
当整个下载项目完成是发生该事件也发生在完成刷新页面.
NavigateComplete2
当整个导航完成. 该事件对应于 BeforeNavigate2.
NewWindow2
在一个新的窗口被创建以显示Web页或者其他资源的时候发生。譬如你在页面中以新建窗口的方式打开一个连接
OnStatusBar
当StatusBar 属性被改变的时候发生。
我们要做的是多线程多页面浏览器,今天只是一个基础,WebBrowser有个很大的缺点,就是对于window.open弹出新窗口是获取不到地址,这些问题留着后续连载中