2013-03-10 54 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

相关问题