欢迎光临
我们一直在努力

WebBrowser控件捕捉DHTML事件-.NET教程,组件控件开发

建站超值云服务器,限时71元/月

作者:tuenhai.com msn: king#tuenhai.com

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.tuenhai.com/

   开发工具:microsoft visual studio .net 2003
   操作系统:windows xp

  原文:http://www.devx.com/vb2themax/tip/18798

  和其他控件一样,我们可以用webbrowser控件来构筑windows form应用程序。从工具箱中选择windows 窗体控件组,单击“microsoft web 浏览器”,visual studio .net 在后台使用aximp.exe工具创建activex 控件,控件名字为“axwebbrowser”。在vb.net中,不能直接使用com组件,com都是unmanaged code,在vb.net中使用这些组件,必须完成从unmanaged code到managed code的转换。
   一般地,你可以像使用原来的webbrowser控件一样,如call 方法,指定属性,捕捉事件等。
   有些事情并不是那么简单的。我们要捕捉页面事件,如当用户点击页面元素(如背景)时,引发页面元素的onclick事件。发果没有捕捉到事件,就要提升dhtml的等级,直到document对象的最高层次。这样,我们就能捕捉到任何事件了。在vb6中,我们可以简单地用withevents关键词指定webbrowser.document到mshtml.htmldocument。
   在vb.net中,这个简单方法不再有效。因为activex控件创建了两个接口,两个接口中使用了同样的方法名,导致出现运行时错误。所以,你必须明确指定document对象使用的接口,并创建事件处理句柄(呵呵,tuenhai翻译得还不错吧)。

  以下是示例代码:

important: this code assumes that youve added a reference to the
microsoft html object library type library

private sub form1_load(byval sender as system.object, _
byval e as system.eventargs) handles mybase.load
axwebbrowser1.navigate(“http://localhost/default.asp”)
end sub

private sub axwebbrowser1_navigatecomplete2(byval sender as object, _
byval e as axshdocvw.dwebbrowserevents2_navigatecomplete2event) handles _
axwebbrowser1.navigatecomplete2
must wait for this event to grab a valid refernece to the document
property
dim doc as mshtml.htmldocument = directcast(axwebbrowser1.document, _
mshtml.htmldocument)

cast to the interface that defines the event youre interested in
dim docevents as mshtml.htmldocumentevents2_event = directcast(doc, _
mshtml.htmldocumentevents2_event)
define a handler to the onclick event
addhandler docevents.onclick, addressof onclickproc
end sub

notice that the signature of this event is different from usual, as it
is expected to return a boolean – if false the default effect associated
with the event (for example, jumping to another page if the click is on
an hyperlink) is canceled.

private function onclickproc(byval obj as mshtml.ihtmleventobj) as boolean
an object on the page has been clicked – you can learn more about
type and position of this object by querying the objs properties

end function

译者注:
   这是tuenhai的第一篇译稿。
   个人心得,近几日在国外有关程序设计网站转悠,得益良多。又想到书法学习的“取法乎上”。共享软件的出路在于走向国际。软件设计的学习又何尝不是这样呢?国际的学习资源相比国内的学习资源如何?
   english决不是障碍。tuenhai不相信自己的english会比您好。初中基础,加上金山词霸即指即译,足矣。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » WebBrowser控件捕捉DHTML事件-.NET教程,组件控件开发
分享到: 更多 (0)