Как обрабатывать события документа в Visual Basic.NET приложения

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:311284
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Аннотация
В этой статье показано, как перехватить события документа для элемента управления WebBrowser в Visual Basic.NET.

back to the top

Требования

В следующем списке представлены оборудования, программного обеспечения, сетевой инфраструктуры и пакетов обновления, необходимо:
  • Microsoft Visual Studio.NET
  • Internet Explorer 5.5 с пакетом обновления 2 (SP2) или более поздней версии
Предполагается, что вы знакомы с следующие темы:
  • Visual Studio.NET
  • Обозреватель Internet Explorer
  • Элемент управления WebBrowser
back to the top

Описание приема

Элемент управления WebBrowser является простой элемент управления для работы в Visual Studio.NET или более ранней версии Microsoft Visual Studio. Тем не менее может оказаться более трудным для обработки событий элемента управления WebBrowser в Visual Studio.NET.

Следующий интерфейс событий предоставляет большую часть документа события, обрабатываемые в приложении:
Mshtml.HTMLDocumentEvents2_Event				
Для обработки события, необходимо создать свой собственный Sub процедура или функция, которую можно вызвать при возникновении события. Подпись события, возникающего должны совпадать. Например следующий Sub Процедура обработки Мышки-подсказки события документа:
Private Sub document_onmouseover(ByVal e As mshtml.IHTMLEventObj)				
После обработчика событий на месте, необходимо подключать события. Событие можно привязать любое время после DocumentComplete Запускает событие элемента управления WebBrowser. Ниже приведен синтаксис ловушки:
AddHandler CType(document, _mshtml.HTMLDocumentEvents2_Event).onmouseover, _AddressOf Me.document_onmouseover				
Этот код вызывает AddHandler инструкции и использование CType функции для передачи событий. В CType функция пытается привести объект документа для соответствующего типа (Mshtml.HTMLDocumentEvents2_Event), а затем OnMouseOver событие передается от. В Me.document_onmouseoverSub второй параметр передается процедуре AddressOf оператор, который предоставляет адрес обработчика.

back to the top

Создание проекта и добавление кода

В следующем примере элемент управления WebBrowser переходит к http://www.Microsoft.com. После загрузки страницы, ловит образца OnMouseOver и (OnClick) события. Образец затем добавляется текст в поле со списком при каждом вызове событий.
  1. Запустите Visual Studio.NET.
  2. Создание нового проекта приложения Windows в Visual Basic.NET
  3. Добавьте в проект ссылку на Microsoft.mshtml.
  4. На панели инструментов нажмите кнопку Общие.
  5. Откройте панель правой кнопкой мыши и выберите команду Настройка панели элементов.
  6. Выберите Веб-обозревателе Microsoft Установите флажок и нажмите кнопку ОК.
  7. В области элементов дважды щелкните значок Проводник.
  8. На панели инструментов нажмите кнопку Windows Forms, а затем дважды щелкните значок ListBox элемент управления.
  9. Расположите элементы управления, таким образом, чтобы их можно легко просмотреть в форме.
  10. Добавьте следующий код в верхнюю часть AssemblyInfo.vb, замена существующих предложений импорта
    Imports SystemImports System.DrawingImports System.CollectionsImports System.ComponentModelImports System.Windows.FormsImports System.DataImports System.ReflectionImports System.Runtime.InteropServicesImports System.ThreadingImports System.Diagnostics
  11. Добавьте следующий код между Код, автоматически созданный конструктором форм Windows и Класс окончания в представлении кода Form1.vbОткрытый
    Shared dwCookie2 As Integer    Public Sub add_list(ByVal a As Object)        ListBox1.Items.Insert(0, a)    End Sub    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        AxWebBrowser1.Navigate2("http://www.microsoft.com")        Dim x As IEEvents = New IEEvents(AxWebBrowser1)        x.fm = Me    End Sub    Private Sub AxWebBrowser1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AxWebBrowser1.Enter    End Sub    Private Sub AxWebBrowser1_DocumentComplete(ByVal sender As Object, ByVal e As AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent) Handles AxWebBrowser1.DocumentComplete        Dim doc As mshtml.HTMLDocument        doc = AxWebBrowser1.Document        AddHandler CType(doc, _            mshtml.HTMLDocumentEvents2_Event).onclick, AddressOf Document_onclick        AddHandler CType(doc, _     mshtml.HTMLDocumentEvents2_Event).onmouseover, AddressOf Document_onmouseover    End Sub    Private Sub AxWebBrowser1_BeforeNavigate2(ByVal sender As Object, ByVal e As AxSHDocVw.DWebBrowserEvents2_BeforeNavigate2Event) Handles AxWebBrowser1.BeforeNavigate2        Dim doc As mshtml.HTMLDocument        doc = AxWebBrowser1.Document        RemoveHandler CType(doc, _            mshtml.HTMLDocumentEvents2_Event).onclick, _            AddressOf Document_onclick        RemoveHandler CType(doc, _            mshtml.HTMLDocumentEvents2_Event).onmouseover, _            AddressOf Document_onmouseover    End Sub    Private Sub Document_onmouseover(ByVal e As mshtml.IHTMLEventObj)        ListBox1.Items.Insert(0, "onMouseOver: " & _            e.srcElement.tagName.ToString())    End Sub    Private Function Document_onclick(ByVal e As mshtml.IHTMLEventObj) _            As Boolean        ListBox1.Items.Insert(0, "onClick: " & _            e.srcElement.tagName.ToString())        Return True    End Function
  12. Добавьте следующий код после Класс окончания
    Public Class IEHTMLDocumentEvents    Implements mshtml.HTMLDocumentEvents2    Public Sub onactivate(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.onactivate    End Sub    Public Sub onafterupdate(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.onafterupdate    End Sub    Public Function onbeforeactivate(ByVal pEvtObj As mshtml.IHTMLEventObj) As Boolean Implements mshtml.HTMLDocumentEvents2.onbeforeactivate        Return True    End Function    Public Function onbeforedeactivate(ByVal pEvtObj As mshtml.IHTMLEventObj) As Boolean Implements mshtml.HTMLDocumentEvents2.onbeforedeactivate        Return True    End Function    Public Sub onbeforeeditfocus(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.onbeforeeditfocus    End Sub    Public Function onbeforeupdate(ByVal pEvtObj As mshtml.IHTMLEventObj) As Boolean Implements mshtml.HTMLDocumentEvents2.onbeforeupdate        Return True    End Function    Public Sub oncellchange(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.oncellchange    End Sub    Public Function onclick(ByVal pEvtObj As mshtml.IHTMLEventObj) As Boolean Implements mshtml.HTMLDocumentEvents2.onclick        Return True    End Function    Public Function oncontextmenu(ByVal pEvtObj As mshtml.IHTMLEventObj) As Boolean Implements mshtml.HTMLDocumentEvents2.oncontextmenu        Return True    End Function    Public Function oncontrolselect(ByVal pEvtObj As mshtml.IHTMLEventObj) As Boolean Implements mshtml.HTMLDocumentEvents2.oncontrolselect        Return True    End Function    Public Sub ondataavailable(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.ondataavailable    End Sub    Public Sub ondatasetchanged(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.ondatasetchanged    End Sub    Public Sub ondatasetcomplete(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.ondatasetcomplete    End Sub    Public Function ondblclick(ByVal pEvtObj As mshtml.IHTMLEventObj) As Boolean Implements mshtml.HTMLDocumentEvents2.ondblclick        Return True    End Function    Public Sub ondeactivate(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.ondeactivate    End Sub    Public Function ondragstart(ByVal pEvtObj As mshtml.IHTMLEventObj) As Boolean Implements mshtml.HTMLDocumentEvents2.ondragstart        Return True    End Function    Public Function onerrorupdate(ByVal pEvtObj As mshtml.IHTMLEventObj) As Boolean Implements mshtml.HTMLDocumentEvents2.onerrorupdate        Return True    End Function    Public Sub onfocusin(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.onfocusin    End Sub    Public Sub onfocusout(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.onfocusout    End Sub    Public Function onhelp(ByVal pEvtObj As mshtml.IHTMLEventObj) As Boolean Implements mshtml.HTMLDocumentEvents2.onhelp        Return True    End Function    Public Sub onkeydown(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.onkeydown    End Sub    Public Function onkeypress(ByVal pEvtObj As mshtml.IHTMLEventObj) As Boolean Implements mshtml.HTMLDocumentEvents2.onkeypress        Return True    End Function    Public Sub onkeyup(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.onkeyup    End Sub    Public Sub onmousedown(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.onmousedown    End Sub    Public Sub onmousemove(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.onmousemove    End Sub    Public Sub onmouseout(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.onmouseout    End Sub    Public Sub onmouseover(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.onmouseover    End Sub    Public Sub onmouseup(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.onmouseup    End Sub    Public Function onmousewheel(ByVal pEvtObj As mshtml.IHTMLEventObj) As Boolean Implements mshtml.HTMLDocumentEvents2.onmousewheel        Return True    End Function    Public Sub onpropertychange(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.onpropertychange    End Sub    Public Sub onreadystatechange(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.onreadystatechange    End Sub    Public Sub onrowenter(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.onrowenter    End Sub    Public Function onrowexit(ByVal pEvtObj As mshtml.IHTMLEventObj) As Boolean Implements mshtml.HTMLDocumentEvents2.onrowexit        Return True    End Function    Public Sub onrowsdelete(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.onrowsdelete    End Sub    Public Sub onrowsinserted(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.onrowsinserted    End Sub    Public Sub onselectionchange(ByVal pEvtObj As mshtml.IHTMLEventObj) Implements mshtml.HTMLDocumentEvents2.onselectionchange    End Sub    Public Function onselectstart(ByVal pEvtObj As mshtml.IHTMLEventObj) As Boolean Implements mshtml.HTMLDocumentEvents2.onselectstart        Return True    End Function    Public Function onstop(ByVal pEvtObj As mshtml.IHTMLEventObj) As Boolean Implements mshtml.HTMLDocumentEvents2.onstop        Return True    End FunctionEnd ClassPublic Class IEEvents    Implements SHDocVw.DWebBrowserEvents2    Public fm As Form1    Private icp As System.Runtime.InteropServices.UCOMIConnectionPoint    Private cookie As Integer = -1    Private m_ie As AxSHDocVw.AxWebBrowser    Public Sub New(ByRef ie As AxSHDocVw.AxWebBrowser)        ' Call QueryInterface for IConnectionPointContainer        m_ie = ie        Dim icpc As System.Runtime.InteropServices.UCOMIConnectionPointContainer = CType(ie.GetOcx(), System.Runtime.InteropServices.UCOMIConnectionPointContainer)        ' Find the connection point for the        ' DWebBrowserEvents2 source interface        Dim g As Guid = GetType(SHDocVw.DWebBrowserEvents2).GUID        icpc.FindConnectionPoint(g, icp)        'Pass a pointer to the host to the connection point        icp.Advise(Me, cookie)        ' Show the browser        ie.Visible = True        Dim oURL As Object = "http://www.microsoft.com"        Dim oEmpty As Object = ""        ie.Navigate2(oURL, oEmpty, oEmpty, oEmpty, oEmpty)    End Sub    Public Sub BeforeNavigate2(ByVal pDisp As Object, ByRef URL As Object, ByRef Flags As Object, ByRef TargetFrameName As Object, ByRef PostData As Object, ByRef Headers As Object, ByRef Cancel As Boolean) Implements SHDocVw.DWebBrowserEvents2.BeforeNavigate2    End Sub    Public Sub ClientToHostWindow(ByRef CX As Integer, ByRef CY As Integer) Implements SHDocVw.DWebBrowserEvents2.ClientToHostWindow    End Sub    Public Sub CommandStateChange(ByVal Command As Integer, ByVal Enable As Boolean) Implements SHDocVw.DWebBrowserEvents2.CommandStateChange    End Sub    Public Sub DocumentComplete(ByVal pDisp As Object, ByRef URL As Object) Implements SHDocVw.DWebBrowserEvents2.DocumentComplete        Dim doc As mshtml.HTMLDocument = CType(CType(pDisp, SHDocVw.IWebBrowser2).Document, mshtml.HTMLDocument)        Dim pConPtCon As System.Runtime.InteropServices.UCOMIConnectionPointContainer = CType(doc, System.Runtime.InteropServices.UCOMIConnectionPointContainer)        Dim guid As Guid = System.Type.GetType("mshtml.HTMLDocumentEvents2").GUID        Dim pConPt As System.Runtime.InteropServices.UCOMIConnectionPoint        pConPtCon.FindConnectionPoint(guid, pConPt)        Dim d As IEHTMLDocumentEvents = New IEHTMLDocumentEvents        pConPt.Advise(d, Form1.dwCookie2)        Dim iEvent As mshtml.HTMLDocumentEvents2_Event        iEvent = CType(doc, mshtml.HTMLDocumentEvents2_Event)        AddHandler iEvent.onclick, AddressOf ClickEventHandler        AddHandler iEvent.onmouseover, AddressOf MouseOverEventHandler    End Sub    Private Function ClickEventHandler(ByVal e As mshtml.IHTMLEventObj) As Boolean        fm.add_list(e.type + ":" + e.srcElement.tagName)        Return True    End Function    Private Sub MouseOverEventHandler(ByVal e As mshtml.IHTMLEventObj)        fm.add_list(e.type + ":" + e.srcElement.tagName)    End Sub    Public Sub DownloadBegin() Implements SHDocVw.DWebBrowserEvents2.DownloadBegin    End Sub    Public Sub DownloadComplete() Implements SHDocVw.DWebBrowserEvents2.DownloadComplete    End Sub    Public Sub FileDownload(ByRef Cancel As Boolean) Implements SHDocVw.DWebBrowserEvents2.FileDownload    End Sub    Public Sub NavigateComplete2(ByVal pDisp As Object, ByRef URL As Object) Implements SHDocVw.DWebBrowserEvents2.NavigateComplete2    End Sub    Public Sub NavigateError(ByVal pDisp As Object, ByRef URL As Object, ByRef Frame As Object, ByRef StatusCode As Object, ByRef Cancel As Boolean) Implements SHDocVw.DWebBrowserEvents2.NavigateError    End Sub    Public Sub NewWindow2(ByRef ppDisp As Object, ByRef Cancel As Boolean) Implements SHDocVw.DWebBrowserEvents2.NewWindow2    End Sub    Public Sub OnFullScreen(ByVal FullScreen As Boolean) Implements SHDocVw.DWebBrowserEvents2.OnFullScreen    End Sub    Public Sub OnMenuBar(ByVal MenuBar As Boolean) Implements SHDocVw.DWebBrowserEvents2.OnMenuBar    End Sub    Public Sub OnQuit() Implements SHDocVw.DWebBrowserEvents2.OnQuit    End Sub    Public Sub OnStatusBar(ByVal StatusBar As Boolean) Implements SHDocVw.DWebBrowserEvents2.OnStatusBar    End Sub    Public Sub OnTheaterMode(ByVal TheaterMode As Boolean) Implements SHDocVw.DWebBrowserEvents2.OnTheaterMode    End Sub    Public Sub OnToolBar(ByVal ToolBar As Boolean) Implements SHDocVw.DWebBrowserEvents2.OnToolBar    End Sub    Public Sub OnVisible(ByVal Visible As Boolean) Implements SHDocVw.DWebBrowserEvents2.OnVisible    End Sub    Public Sub PrintTemplateInstantiation(ByVal pDisp As Object) Implements SHDocVw.DWebBrowserEvents2.PrintTemplateInstantiation    End Sub    Public Sub PrintTemplateTeardown(ByVal pDisp As Object) Implements SHDocVw.DWebBrowserEvents2.PrintTemplateTeardown    End Sub    Public Sub PrivacyImpactedStateChange(ByVal bImpacted As Boolean) Implements SHDocVw.DWebBrowserEvents2.PrivacyImpactedStateChange    End Sub    Public Sub ProgressChange(ByVal Progress As Integer, ByVal ProgressMax As Integer) Implements SHDocVw.DWebBrowserEvents2.ProgressChange    End Sub    Public Sub PropertyChange(ByVal szProperty As String) Implements SHDocVw.DWebBrowserEvents2.PropertyChange    End Sub    Public Sub SetSecureLockIcon(ByVal SecureLockIcon As Integer) Implements SHDocVw.DWebBrowserEvents2.SetSecureLockIcon    End Sub    Public Sub StatusTextChange(ByVal Text As String) Implements SHDocVw.DWebBrowserEvents2.StatusTextChange    End Sub    Public Sub TitleChange(ByVal Text As String) Implements SHDocVw.DWebBrowserEvents2.TitleChange    End Sub    Public Sub UpdatePageStatus(ByVal pDisp As Object, ByRef nPage As Object, ByRef fDone As Object) Implements SHDocVw.DWebBrowserEvents2.UpdatePageStatus    End Sub    Public Sub WindowClosing(ByVal IsChildWindow As Boolean, ByRef Cancel As Boolean) Implements SHDocVw.DWebBrowserEvents2.WindowClosing    End Sub    Public Sub WindowSetHeight(ByVal Height As Integer) Implements SHDocVw.DWebBrowserEvents2.WindowSetHeight    End Sub    Public Sub WindowSetLeft(ByVal Left As Integer) Implements SHDocVw.DWebBrowserEvents2.WindowSetLeft    End Sub    Public Sub WindowSetResizable(ByVal Resizable As Boolean) Implements SHDocVw.DWebBrowserEvents2.WindowSetResizable    End Sub    Public Sub WindowSetTop(ByVal Top As Integer) Implements SHDocVw.DWebBrowserEvents2.WindowSetTop    End Sub    Public Sub WindowSetWidth(ByVal Width As Integer) Implements SHDocVw.DWebBrowserEvents2.WindowSetWidth    End SubEnd Class
back to the top

Дополнительные замечания

  • Этот процесс аналогичен при автоматизации обозревателя Internet Explorer. Замена AxWebBrowser1 Имя локальной переменной для обозревателя Internet Explorer.
  • В этом примере не учитывает наборы рамок. При переходе в набор фреймов может отсутствовать какие-либо события в приложении. При необходимости в приложении, необходимо добавить код, чтобы обработать возможность набора фреймов.
back to the top
Ссылки
Для получения дополнительных сведений об элементе управления WebBrowser, а также методы свойства и события, которые предоставляет элемент управления WebBrowser, обратитесь к следующей документации MSDN:Для получения дополнительных сведений о разработке веб-приложений для Microsoft Internet Explorer посетите веб-узлы корпорации Майкрософт:back to the top
Веб-браузер

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 311284 — последний просмотр: 12/07/2015 08:05:18 — редакция: 4.0

Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual Basic .NET 2003 Standard Edition

  • kbnosurvey kbarchive kbhowtomaster kbwebbrowser kbmt KB311284 KbMtru
Отзывы и предложения