我有一个需要帮助的小问题。
我有一个网络浏览器,以及一个从类中查找文本的按钮,下面是下面的代码:
Dim word As String = (WebBrowser1.Document.GetElementsByTagName("P").Cast(Of HtmlElement) _
.FirstOrDefault(Function(el) el.GetAttribute("className") = "tagline").InnerText)
Dim lastWord As String = word.Split(" ").Last
If Not ListBox1.Items.Contains(lastWord) Then
ListBox1.Items.Add(lastWord)
End If
该站点具有名称为“ tagline”的多重类,我希望按钮按下后能够获得下一个。我怎样才能做到这一点..?
您需要具有一个全局变量,该变量保留要检索的“标语”的索引。并将此索引器用作Skip方法的参数,以将其应用于Where而不是FirstOrDefault返回的序列
' Declared at the global level
Dim index as Integer = 0
' At each button press you write
Dim word As String = WebBrowser1.Document.GetElementsByTagName("P") _
.Cast(Of HtmlElement) _
.Where(Function(el) el.GetAttribute("className") = "tagline") _
.Skip(index) _
.First().InnerText
Dim lastWord As String = word.Split(" ").Last
index = index + 1
因此,在下一个按钮按下时,您跳到第二个元素,然后跳到第三个元素,依此类推。但是,这带来了问题。您应该知道WebBrowser文档中存在多少个元素,以避免请求不存在的元素。因此,也许最好让所有具有“ tagline”属性的元素并将其保留在列表中,以便于检索
' Declared at the global level
Dim index as Integer = 0
Dim elements = new List(Of HtmlElement)()
' After you have loaded the document
elements = WebBrowser1.Document.GetElementsByTagName("P") _
.Cast(Of HtmlElement) _
.Where(Function(el) _
el.GetAttribute("className") = "tagline") _
.ToList()
而在按钮代码中
if index < elements.Count Then
Dim word = elements.Skip(index).First().InnerText
Dim lastWord As String = word.Split(" ").Last
index = index + 1
End if
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句