- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
WebBrowser页面与WinForm
交互技巧
下面的代码假设你已经建立了一个WindowsForm,上面有一个WebBrowser名为“webBrowser”。
StudyCase1:用WinForm的EventHandler响应Web页面的事件
现在有这样一个WindowsApplication,它的界面上只有一个WebBrowser,显示一个本地的HTML文件作为界面。现在的问题是,所有逻辑都可以放在HTML文件里,唯独“关闭”按钮遇到了困难——通常,Web页面是没有办法直接控制浏览器的,更不用说结束这个WinForm程序了。
但是,在.Net2.0当中,“由WindowsForm响应Web页面的事件”已经成为了现实。
在.Net2.0中,整个HTML文档以及其包含的各个HTML元素,都和一个个HtmlDocument、HtmlElement之类的.Net对象对应。因此只要找到这个“关闭”按钮对应的HtmlElement对象,为其click事件添加EventHandler即可。
假设HTML源代码如下:
<html>
<body>
<inputtype="button"id="btnClose"value="关闭"/>
</body>
</html>
<html>
<html>
<body>
<inputtype="button"id="btnClose"value="关
</body>
</html>
闭"/>
那么找出该按钮并为之添加EventHandler的代码如下:
HtmlDocumenthtmlDoc=webBrowser.Document;HtmlElementbtnElement=htmlDoc.All["btnClose"];if(btnElement!=null)
{
btnElement.click+=newHtmlElementEventHandler(HtmlBtnClose_Click);
}
其中HtmlBtnClose_Click是按下Web按钮时的EventHandler。
很简单吧?那么稍稍高级一点的——我们都知道一个HTML元素可能有很多各种各样的事件,而HtmlElement这个类只给出最常用、共通的几个。那么,如何响应其他事件呢?这也很简单,只需要调用HtmlElement的AttachEventHandler就可以了:
btnElement.AttachEventHandler("onclick",newEventHandler(HtmlBtnClose_Click));
//这一句等价于上面的btnElement.click+=newHtmlElementEventHandler
(HtmlBtnClose_Click);
对于其他事件,把"onclick"换成该事件的名字就可以了。例如:formElement.AttachEventHandler("onsubmit",newEventHandler(HtmlForm_Submit));
StudyCase2:表单(form)的自动填写和提交
要使我们的WebBrowser具有自动填表、甚至自动提交的功能,并不困难。
假设有一个最简单的登录页面,输入用户名密码,点“登录”按钮即可登录。已知用户名输入框的id(或Name,下同)是username,密码输入框的id是password,“登录”按钮的id是submitbutton,那么我们只需要在webBrowser的DocumentCompleted事件中使用下面的代码即可:
HtmlElementbtnSubmit=webBrowser.Document.All["submitbutton"];HtmlElementtbUserid=webBrowser.Document.All["username"];HtmlElementtbPasswd=webBrowser.Document.All["password"];
if(tbUserid==null||tbPasswd==null||btnSubmit==null)
return;
tbUserid.SetAttribute("value","smalldust");tbPasswd.SetAttribute("value",);btnSubmit.InvokeMember("click");
这里我们用S
文档评论(0)