开发工具: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会比您好。初中基础,加上金山词霸即指即译,足矣。
|