WebBrowser控制項捕捉DHTML事件

來源:互聯網
上載者:User
dhtml|web|webbrowser控制項

作者: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 網頁瀏覽器”,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 you've 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 you're 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 obj's properties
' ...
End Function

譯者註:
   這是tuenhai的第一篇譯稿。
   個人心得,近幾日在國外有關程式設計網站轉悠,得益良多。又想到書法學習的“取法乎上”。共用軟體的出路在於走向國際。軟體設計的學習又何嘗不是這樣呢?國際的學習資源相比國內的學習資源如何?
   English決不是障礙。tuenhai不相信自己的English會比您好。初中基礎,加上金山詞霸即指即譯,足矣。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。