WebBrowser控件的常用方法、属性和事件

开发 后端
Net Framework 提供了WebBrowser控件,本文介绍了WebBrowser控件的常用方法、属性和事件,作为制作浏览器的基础。

WebBrowser控件的常用方法:

Navigate(string urlString):浏览urlString表示的网址

Navigate(System.Uri url):浏览url表示的网址

Navigate(string urlString, string targetFrameName, byte[] postData, string additionalHeaders):

浏览urlString表示的网址,并发送postData中的消息

(通常我们登录一个网站的时候就会把用户名和密码作为postData发送出去)

GoBack():后退

GoForward():前进

Refresh():刷新

Stop():停止

GoHome():浏览主页

WebBrowser控件的常用属性:

Document:获取当前正在浏览的文档

DocumentTitle:获取当前正在浏览的网页标题

StatusText:获取当前状态栏的文本

Url:获取当前正在浏览的网址的Uri

ReadyState:获取浏览的状态

WebBrowser控件的常用事件:

DocumentTitleChanged,

CanGoBackChanged,

CanGoForwardChanged,

DocumentTitleChanged,

ProgressChanged,

ProgressChanged

这几个意思很明显,就不细说了。

Navigating,开始导航

Navigated,导航完成并开始装载文档

DocumentCompleted:按理应该是整个文档装载完成,即网页完全显示完才发生,但事实上似乎不是,所以还是慎用这个事件。用ReadyState来判断是否完全装载完成更好。

这些方法、属性、事件,对于实际浏览来说并不够,因为你要能处理弹出新窗口的信息,就算是你要强制所有的链接都在同一窗口内打开,你也要知道使用者点了什么链接吧。但是WebBrowser竟然没有提供这个事件,有一个NewWindow事件,在使用者点击链接将要弹出新窗口时发生,但是这个事件没有什么有用的参数,你根本就不知道使用者要打开的是什么链接。可见WebBrowser的设计者很不负责。为了解决这个问题,必须借助ShDocVw.dll。工程--添加引用--COM--Microsoft Internet Controls--确定,就可以把ShDocVw.dll添加到工程中了,然后我们就可以这样:

  1. //(假设wb是一个已经存在的WebBrowser)  
  2. wb.Navigate("about:blank");  
  3. ((SHDocVw.DWebBrowserEvents_Event)wb.ActiveXInstance).NewWindow+=BrowserNewWindow; 

DWebBrowserEvents_Event是一个接口,它提供了NewWindow事件,这个事件带有详细的参数。

BrowserNewWindow就是NewWindow事件的处理程序:

  1. void BrowserNewWindow(string url, int flag, string target, ref object data,  
  2.     string header, ref bool processed) {  
  3.     processed=true;  
  4.     wb.Navigate(url, null, (byte[])data, header);  

processed=true的目的是为了防止新窗口在ie中打开。

除了DWebBrowserEvents_Event,还有一个DWebBrowserEvents2_Event接口,同样可以实现上述功能,区别是后者适用于ie7以上的浏览器,当然前者也可用于ie7,只是不能利用其新特性而已(如在新窗口中打开链接和在新标签中打开链接是两个不同的事件(NewWindow2,NewWindow3))。

【编辑推荐】

  1. 关于C#知识点总结
  2. C#开发和使用中的33个技巧
  3. SQL Server存储过程介绍
  4. C#下SQL Server 2008表类型参数传递
  5. C#向SQL Server中插入记录时的问题
责任编辑:book05 来源: 新浪博客
相关推荐

2009-08-18 13:54:41

C#标签

2010-08-12 13:59:37

FlexList控件

2009-09-17 16:45:56

C#数组

2015-03-03 09:19:12

UIScrollVie

2009-12-30 13:59:58

Silverlight

2017-02-17 09:37:12

Android自定义控件方法总结

2012-08-13 09:56:45

Windows Pho

2014-11-14 10:57:24

Android控件

2010-01-08 18:26:34

VB.NET网页控件事

2011-08-16 10:45:25

iPhone开发控件

2010-10-08 09:42:23

JavaScript方

2012-05-14 10:14:42

WinForm

2010-08-06 09:56:06

Flex事件机制

2009-07-17 17:33:22

jQuery

2010-09-28 10:33:59

HTML DOM Ch

2009-10-10 16:40:37

VB.NET Cont

2010-11-16 15:23:28

Oracle游标

2010-08-24 13:55:38

DIVstyle

2015-03-03 15:59:25

Android开发属性

2009-08-03 14:42:50

C#自定义控件
点赞
收藏

51CTO技术栈公众号