Numer ID artykułu: 311284 - Ostatnia weryfikacja: 13 maja 2007 - Weryfikacja: 2.2

JAK: Obsługiwanie zdarzeń dokumentów w aplikacji programu Visual Basic .NET

Porada dotycząca systemuTen artykuł dotyczy innego niż obecnie używany systemu operacyjnego. Zawartość artykułu, która może być nieodpowiednia do używanego systemu, została wyłączona.
Ten artykuł został opublikowany wcześniej pod numerem PL311284

Na tej stronie

Rozwiń wszystko | Zwiń wszystko

Streszczenie

W tym artykule opisano sposób przechwytywania zdarzeń dokumentów w formancie WebBrowser w programie Visual Basic .NET.

Wymagania

Poniżej przedstawiono listę zalecanego sprzętu, oprogramowania, infrastruktury sieciowej i dodatków service pack:
  • Microsoft Visual Studio .NET
  • Microsoft Internet Explorer 5.5 z dodatkiem Service Pack 2 (SP2) lub nowszy
W tym artykule zakłada się, że użytkownik jest zaznajomiony z następującymi tematami:
  • Visual Studio .NET
  • Internet Explorer
  • Formant WebBrowser

Opis techniki

W programie Visual Studio .NET i wcześniejszych wersjach programu Microsoft Visual Studio formant WebBrowser obsługuje się stosunkowo łatwo. Obsługiwanie zdarzeń formantu WebBrowser w programie Visual Studio .NET może być jednak trudniejsze.

Poniższy interfejs zdarzenia udostępnia większość zdarzeń dokumentu obsługiwanych w aplikacjach:
Mshtml.HTMLDocumentEvents2_Event
Aby obsłużyć zdarzenie, należy utworzyć własną procedurę Sub lub funkcję wywoływaną po wystąpieniu zdarzenia. Sygnatura wywoływanego zdarzenia musi być zgodna. Na przykład poniższa procedura Sub obsługuje zdarzenie MouseOver dokumentu:
Private Sub document_onmouseover(ByVal e As mshtml.IHTMLEventObj)
Po umieszczeniu programu obsługi zdarzeń należy zahaczyć zdarzenie. Zdarzenie można zahaczyć w dowolnym czasie po wystąpieniu zdarzenia DocumentComplete formantu WebBrowser. Poniżej znajduje się składnia zahaczania:
AddHandler CType(document, _
mshtml.HTMLDocumentEvents2_Event).onmouseover, _
AddressOf Me.document_onmouseover
W tym kodzie wywoływana jest instrukcja AddHandler i używana funkcja CType do przekazania zdarzenia. Funkcja CType przypisuje obiektowi dokumentu odpowiedni typ (mshtml.HTMLDocumentEvents2_Event) i przekazuje zdarzenie OnMouseOver. Procedura SubMe.document_onmouseover jest przekazywana do drugiego parametru, instrukcji AddressOf, podającej adres programu obsługi.

Tworzenie projektu i dodawanie kodu

W poniższym przykładzie formant WebBrowser przechodzi do adresu http://www.microsoft.com (http://www.microsoft.com) . Po załadowaniu strony w przykładzie zahaczane są zdarzenia OnMouseOver oraz OnClick. Następnie po wystąpieniu zdarzenia dodawany jest tekst do pola listy.
  1. Uruchom program Visual Studio .NET.
  2. Utwórz nowy projekt Windows Application w programie Visual Basic .NET.
  3. Dodaj odwołanie do obiektu Microsoft.mshtml w projekcie.
  4. W przyborniku kliknij przycisk General.
  5. Prawym przyciskiem myszy kliknij otwarty panel, a następnie kliknij polecenie Customize Toolbox.
  6. Zaznacz pole wyboru Microsoft Web Browser i kliknij przycisk OK.
  7. W przyborniku kliknij dwukrotnie przycisk Explorer.
  8. W przyborniku kliknij przycisk Windows Forms, a następnie kliknij dwukrotnie formant ListBox.
  9. Rozmieść formanty, aby były łatwo widoczne na formularzu.
  10. Do projektu dodaj następujący kod:
    Private Sub Form1_Load(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles MyBase.Load
        AxWebBrowser1.Navigate2("http://www.microsoft.com")
    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

Uwagi dodatkowe

  • W przypadku automatyzacji programu Internet Explorer procedura będzie wyglądała tak samo. Zastąp zmienną AxWebBrowser1 nazwą zmiennej lokalnej dla programu Internet Explorer.
  • W tym przykładzie nie uwzględnia się zestawów ramek. Po przejściu do zestawu ramek zdarzenia w aplikacji mogą być niewidoczne. Jeśli okaże się to konieczne, należy dodać kod w celu obsługi zestawu ramek.

Materiały referencyjne

Aby uzyskać więcej informacji dotyczących formantu WebBrowser oraz innych metod, właściwości i zdarzeń udostępnianych przez formant WebBrowser, zajrzyj do następującej dokumentacji usługi MSDN:
http://msdn2.microsoft.com/en-us/library/Aa752043.aspx (http://msdn2.microsoft.com/en-us/library/Aa752043.aspx)
Aby uzyskać więcej informacji dotyczących tworzenia rozwiązań opartych na sieci Web dla programu Internet Explorer, odwiedź następujące witryny w sieci Web:
http://msdn.microsoft.com/workshop/entry.asp (http://msdn.microsoft.com/workshop/entry.asp)

http://msdn.microsoft.com/ie/ (http://msdn.microsoft.com/ie/)

http://support.microsoft.com/highlights/iep.asp?FR=0&SD=MSDN (http://support.microsoft.com/?scid=http%3a%2f%2fsupport.microsoft.com%2fhighlights%2fiep.asp%3ffr%3d0%26amp%3bsd%3dmsdn)

Informacje zawarte w tym artykule dotyczą:
  • Microsoft Visual Basic .NET 2002 Standard Edition
Słowa kluczowe: 
kbhowto kbhowtomaster kbwebbrowser KB311284