0

オブジェクト参照が設定されていないエラーに悩まされて一晩中過ごした後。私はついにうまくいくコードを手に入れることができました。問題は、ボタンを 2 回クリックする必要があることです。

    dim turl as string
    dim eles as htmlcollection

    turl = textbox1.text

    'Navigate to task page
    iexplore.Navigate(turl)

    Do
        eles = iexplore.Document.GetElementsByTagName("td")
    Loop While IsNothing(eles) or iexplore.IsBusy

    For Each he As HtmlElement In eles
        If Not IsNothing(he.InnerText) Then
            If he.InnerText.Contains("Remove") Then
                If Not IsNothing(he.NextSibling) Then
                    If Not IsNothing(he.NextSibling.InnerText) Then
                        If Not he.NextSibling.InnerText.Contains("Completed") Then
                            If Not IsNothing(he.Parent.Children.Item(3)) Then
                                MsgBox(he.Parent.Children.Item(3).InnerText)
                            End If
                        End If
                    End If
                End If
            End If
        End If
    Next

iexplore は、Web ブラウザー コントロールへの参照です。

ボタンを 1 回だけクリックする必要があることを確認するために、追加する必要があると誰もが考えることができるものはありますか? (はい、シングルクリックイベントで、呼び出される他のコードは問題なく最初に実行されます.2回のクリックが必要なのはこのセクションだけです)。

また、新しい URL が導入されるたびにこのように動作することにも注意してください。

編集:無限ループを修正

4

1 に答える 1

1

ナビゲーションが完了する前にページにアクセスしようとしています。DocumentCompletedイベント ハンドラでアクセスしてみてください。


イベントに複数のハンドラーが割り当てられないようにするために EventHandler を削除する方法について、OP の要求ごとに編集します。存在しないハンドラーを削除しても、エラーは発生しません。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    AddHandler WebBrowser1.DocumentCompleted, AddressOf DocumentCompleted
    WebBrowser1.Navigate("Http:\\www.Google.com")
End Sub

Private Sub DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs)
    RemoveHandler DirectCast(sender, WebBrowser).DocumentCompleted, AddressOf DocumentCompleted
    MsgBox("hello")
End Sub
于 2013-10-02T11:56:52.777 に答える