[转载]手把手教你打造c#多线程多页面浏览器(连载一)

[转载]手把手教你打造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弹出新窗口是获取不到地址,这些问题留着后续连载中

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏