首先,你不能有這個掛在中間的地方:
Dim arg() As Object = {homeTeam, guestTeam}
AddHandler browser.DocumentCompleted,
New WebBrowserDocumentCompletedEventHandler(AddressOf DoStuff)
AddHandler
可能需要在某些Initialize
方法,這可能是內部Sub New
,InitializeComponent
後,或內部,或者只要你期望它被觸發(特定事件之後)。請注意,您正在使用默認事件類型的本地.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的意見建議。
你們是不是要手動調用DocumentCompleted事件? – VladL 2013-03-10 09:57:18
沒有。我想在DocumentCompleted事件觸發時將其他參數傳遞給DoStuff方法。我只是執行browser.Navigate(uri),然後DoStuff調用應該在瀏覽器完成加載後工作。 – sachinthana87 2013-03-10 10:30:11
但DoStuff()是您的事件處理程序,將在DocumentCompleted事件中自動調用。 homeTeam和guestTeam從哪裏來? – VladL 2013-03-10 10:39:09