vb.net代码没有';第一次它不工作';s运行,但在后续运行时不运行
整夜被对象引用未设置错误困扰后。我终于找到了一些有效的代码。问题很简单,我必须先单击按钮2x,然后才能执行以下操作:vb.net代码没有';第一次它不工作';s运行,但在后续运行时不运行,vb.net,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.GetElementsByT
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浏览器控件的引用
有没有人能想到我应该添加什么,以确保按钮只需单击一次?(是的,它是在一个单击事件上运行的,另一个被调用的代码第一次运行时没有问题,只有这个部分似乎需要单击两次)
我还想指出,每次引入新url时,它的行为都是这样的
已编辑:修复了无限循环如果您试图在导航完成之前访问页面,请尝试在事件处理程序中访问它
编辑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
您是否尝试过在所有异常(甚至捕获的异常)上使用break进行调试?有时,调试器会在不应该捕获的情况下捕获异常,这可能是因为第一次运行时出现异常。此外,您是否仔细检查了失败的条件是否是导致它无法到达
MsgBox
行的原因?这是有问题的,因为我无法通过调试器运行代码。调试器没有访问某些文件的权限,这些文件在运行代码时会被访问。请在发布一个小片段后进行编辑。您可能想了解一下:我对这种方法的担心是,我实际上是在程序启动后立即加载文档。加载的文档需要身份验证,因此我强制用户将其移开,以便程序可以从此点开始自由使用身份验证令牌。我不希望在加载第一个文档时运行代码。这似乎是一种“每次加载文档时都这样做”的方法,这不是我需要的。如果是我试图访问文件太快,我可能不得不抛出一个计时器在那里。我宁愿不要…你不能访问物理上不可用的东西。您可能需要在那里放置某种条件来测试第一次文档加载。或者检查您是否有授权令牌我很好奇,如果我将添加处理程序行放在按钮单击事件中,它应该在按钮被单击之前不起作用否?我移动了它并将其设置为我的上一条注释,它起作用了,只不过它显示了msgbox 2x…这是正确的,但您需要注意不要多次添加它。在将处理程序添加到click事件或document completed事件之前,可以删除该处理程序。