0

在花了整夜困扰对象引用未设置错误之后。我终于设法得到了一些有效的代码。问题很简单,我必须在它之前单击按钮 2x:

    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 浏览器控件的引用。

是否有任何人可以想到我应该添加以确保按钮只需要单击一次?(是的,它在一次单击事件中,被调用的其他代码第一次运行没有问题,只是这部分似乎需要 2 次单击)。

我还想指出,每次引入新 url 时它的行为都是这样的。

编辑:固定无限循环

4

1 回答 1

1

您正在尝试在导航完成之前访问您的页面,请尝试在DocumentCompleted事件处理程序中访问它。


根据 OP 的请求编辑有关如何删除 EventHandler 以防止分配给事件的多个处理程序。删除不存在的处理程序不会导致错误。

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 回答