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

How can I pass the homeTeam and guestTeam when firing the DocumentCompleted event. I want to ge the above to values to inside the Dostuff method.

Please help.

4

1 に答える 1

1

まず第一に、これをどこにもぶら下げることはできません。

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

AddHandlerおそらく、 inside 、 after 、または inside 、またはトリガーされると予想されるとすぐに(特定のイベントの後) 、何らかのInitializeメソッドに含める必要があります。ここでは、ネイティブ .NET コンポーネントのデフォルト イベントをデフォルトのイベント タイプで使用していることに注意してください。この場合、トリガーされたときに、既に提供されているもの以外を直接消費することはできません。MSDN の WebBrowser.DocumentCompleted イベントを参照してください。Sub NewInitializeComponentForm_Load

ただし、関連するすべてのクラスをオーバーライドして、独自の 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 がコメントで示唆しているように、実際にそれらをグローバル変数として使用できます。

于 2013-03-10T13:42:58.780 に答える