•  WebBrowser控件捕捉DHTML事件


     其他控件一样,我们可以用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对象使用的接口,并创建事件处理句柄。

      以下是示例代码:

    ' 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

  • 相关阅读:
    dom event 笔记
    提交安钮 提交一次加了 59秒倒计时
    时间倒计时
    把表单数据封装成json格式 插件可用
    dbgrid显示access备注信息
    stringgird中使用TClientDataSet排序的问题
    【单位矩阵】【杭电OJ1575】
    【矩阵快速幂】【杭电OJ1757】
    【关键路径】【拓扑排序+逆拓扑排序】【转】
    【拓扑排序】【关键路径】
  • 原文地址:https://www.cnblogs.com/Fooo/p/803700.html
Copyright © 2020-2023  润新知