2013-03-10 22 views
3
Public Event DocumentCompleted As WebBrowserDocumentCompletedEventHandler 

Dim arg() As Object = {homeTeam, guestTeam} 
     AddHandler browser.DocumentCompleted, New 
WebBrowserDocumentCompletedEventHandler(AddressOf DoStuff) 

Private Sub DoStuff(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs) 

End Sub 

如何在發射DocumentCompleted事件時傳遞homeTeam和guestTeam。 我想將上面的值轉換爲Dostuff方法中的值。如何在調用VB.net時傳遞附加參數

請幫忙。

+0

你們是不是要手動調用DocumentCompleted事件? – VladL 2013-03-10 09:57:18

+0

沒有。我想在DocumentCompleted事件觸發時將其他參數傳遞給DoStuff方法。我只是執行browser.Navigate(uri),然後DoStuff調用應該在瀏覽器完成加載後工作。 – sachinthana87 2013-03-10 10:30:11

+0

但DoStuff()是您的事件處理程序,將在DocumentCompleted事件中自動調用。 homeTeam和guestTeam從哪裏來? – VladL 2013-03-10 10:39:09

回答

1

首先,你不能有這個掛在中間的地方:

Dim arg() As Object = {homeTeam, guestTeam} 
AddHandler browser.DocumentCompleted, 
      New WebBrowserDocumentCompletedEventHandler(AddressOf DoStuff) 

AddHandler可能需要在某些Initialize方法,這可能是內部Sub NewInitializeComponent後,或內部,或者只要你期望它被觸發(特定事件之後)。請注意,您正在使用默認事件類型的本地.NET組件的默認事件。在這種情況下,觸發時,您不能直接使用除已提供的內容之外的其他任何內容。請參閱WebBrowser.DocumentCompleted Event on MSDN

但是,您可以覆蓋所有相關的類,並擁有自己的MyWebBrowser控件和您自己的事件,幷包含其他屬性。見下面的例子:

Public Class Form1 
    Sub New() 
    ' This call is required by the designer. 
    InitializeComponent() 

    Dim browser As New MyWebBrowser 
    AddHandler browser.MyDocumentCompleted, AddressOf DoStuff 
    End Sub 

    Private Sub DoStuff(ByVal sender As Object, ByVal e As MyWebBrowserDocumentCompletedArgs) 
    Dim guestTeam As String = e.GuestTeam 'guest team 
    Dim homeTeam As String = e.HomeTeam 'and home team are both accessible 
    'so you can do some processing on them 
    End Sub 

    Public Class MyWebBrowserDocumentCompletedArgs : Inherits WebBrowserDocumentCompletedEventArgs 
    Dim _homeTeam As String 
    Dim _guestTeam As String 
    Public ReadOnly Property HomeTeam 
     Get 
     Return _homeTeam 
     End Get 
    End Property 
    Public ReadOnly Property GuestTeam 
     Get 
     Return _guestTeam 
     End Get 
    End Property 

    Sub New(url As Uri, homeTeam As String, guestTeam As String) 
     MyBase.New(url) 
     _homeTeam = homeTeam 
     _guestTeam = guestTeam 
    End Sub 
    End Class 

    Public Class MyWebBrowser : Inherits WebBrowser 
    Public Delegate Sub MyWebBrowserDocumentCompletedEventHandler(e As MyWebBrowserDocumentCompletedArgs) 
    Public Event MyDocumentCompleted As MyWebBrowserDocumentCompletedEventHandler 

    Protected Overrides Sub OnDocumentCompleted(e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) 
     MyBase.OnDocumentCompleted(e) 
     'homeTeam and guestTeam need to be extracted from the current instance of MyWebBrowser, and passed further 
     RaiseEvent MyDocumentCompleted(New MyWebBrowserDocumentCompletedArgs(e.Url, "homeTeam", "guestTeam")) 
    End Sub 
    End Class 
End Class 

如果你的項目是比較小的,你確實可以有那些爲全局變量,如@Vlad的意見建議。

+0

非常感謝Neolisk。這是工作。 – sachinthana87 2013-03-10 14:58:57

+0

@ sachinthana87:不要忘記接受和/或upvote。 – Neolisk 2013-03-10 15:01:58

相關問題