vb.net – 使用BackgroundWorker检查WebBrowser中是否存在元素
发布时间:2020-12-17 07:28:34 所属栏目:百科 来源:网络整理
导读:我正在使用后台工作程序使用vb.net操作我的WebBrowser上的一些元素. 例如,后台工作人员RFIDReader将检查我是否在特定链接上. ElseIf TerminalBrowser.Url.ToString.Contains(baseUrl + "box-office/ticket-verification") And rf_code "" Then ' Insert RF C
我正在使用后台工作程序使用vb.net操作我的WebBrowser上的一些元素.
例如,后台工作人员RFIDReader将检查我是否在特定链接上. ElseIf TerminalBrowser.Url.ToString.Contains(baseUrl + "box-office/ticket-verification") And rf_code <> "" Then ' Insert RF Code in "rf_code" hidden text field Me.Invoke(Sub() Me.TerminalBrowser.Document.GetElementById("rf_code").SetAttribute("value",rf_code.ToLower)) End If 如果我点击我的RFID卡,这里会发生什么.它将在我的浏览器中包含我的rf_code元素的相应值. 现在我想要发生的是,我想检查容器本身(synchronize-rfid)是否确实存在(因为它是一个弹出窗口).见图片以供参考. 这是我们的代码. If Me.TerminalBrowser.Document.GetElementById("synchronize-rfid") IsNot Nothing Then ' Code here end if 参考:https://stackoverflow.com/a/2022120/1699388 问题是,BackgroundWorker并没有按照上面的代码与UI进行真正的交互. 我有什么方法可以确定是否使用后台工作符存在该元素? 我想我已经做到了这一点但它不起作用. Dim synchronize_rfid = Me.Invoke(Sub() Me.TerminalBrowser.Document.GetElementById("synchronize-rfid")) If synchronize_rfid IsNot Nothing Then ' Code here end if 解决方法
首先尝试声明变量,然后在调用期间设置它(这将从主线程设置它).
Sub()lambda的行为类似于普通的Sub() – End Sub方法,这意味着您可以在其中执行相同的操作,就像您有一个单独的方法一样. 这对我有用: Dim synchronize_rfid As HtmlElement If Me.InvokeRequired = True Then Me.Invoke(Sub() synchronize_rfid = Me.TerminalBrowser.Document.GetElementById("synchronize-rfid")) Else synchronize_rfid = Me.TerminalBrowser.Document.GetElementById("synchronize-rfid") End If If synchronize_rfid IsNot Nothing Then ' Code here End If (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |