vb.net代码在第一次运行时不起作用,但在后续运行时起作用

时间:2013-10-02 11:38:36

标签: vb.net

花了整整一夜困扰对象引用没有设置错误。我终于设法得到一些有效的代码。问题很简单,我必须在它之前点击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次点击)。

我还要注意,每次引入新网址时,它的行为都是这样的。

编辑:修复无限循环

1 个答案:

答案 0 :(得分:1)

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


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

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