我想在2个单击事件之间等待,因为第二个事件取决于第一个事件的结果。
我的代码清楚了:
'**************************************************************************
'Adding piece number to the webbrowser control
'26/12/2019 Kris Bauwens
'**************************************************************************
Web.Document.GetElementById("hwbOrPiece").InnerText = txtSID.Text
Web.Document.GetElementById("hwbOrPiece").RemoveFocus()
SearchHWB()
Private Sub SearchHWB()
'**************************************************************************
'Search if the piece number exist, if so look for the history
'27/12/2019 Kris Bauwens
'**************************************************************************
Dim HtmlElementcol As HtmlElementCollection = Web.Document.GetElementsByTagName("button")
For Each elem As HtmlElement In HtmlElementcol
If elem.InnerText = "search " Then
elem.Focus()
'Invoke event
elem.InvokeMember("click")
Thread.Sleep(3000) ''''''''''''''''''''''''-> not really working
Do While blnFind = False
SearchHistory()
Loop
Exit For
End If
Next
blnFind = False
End Sub
Private Function SearchHistory() As Boolean
'**************************************************************************
'Look for the history
'27/12/2019 Kris Bauwens
'**************************************************************************
Dim HtmlElementcol As HtmlElementCollection = Web.Document.GetElementsByTagName("button")
For Each elem As HtmlElement In HtmlElementcol
Debug.Print(elem.InnerText)
If elem.InnerText = "SD History " Then
elem.Focus()
'Invoke event
elem.InvokeMember("click")
blnFind = True
Exit For
End If
Next
Return blnFind
End Function
我用'Thread'尝试过,但是速度很快。系统已经从第二个事件开始,并且不等待第一个事件。甚至不等待内部文本执行。
我该如何解决?
我用旧的Application.DoEvents()替换了Thread.Sleep(Visual Basic,直到1998年)我不喜欢,还有其他建议吗?