花了整整一夜困扰对象引用没有设置错误。我终于设法得到一些有效的代码。问题很简单,我必须在它之前点击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次点击)。
我还要注意,每次引入新网址时,它的行为都是这样的。
编辑:修复无限循环
答案 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