2016-03-19 5 views
0

私は助けが必要な小さな問題があります。次の機能を探す

私はウェブブラウザを持ち、そしてクラスからのテキストを見つけたボタンが、うまくHERESに以下のコード:

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 

はサイトが名前「キャッチフレーズ」とmultibleクラスがあり、私はボタンをしたいです私はそれを押した後に次のものを取得する。 どうすればいいですか?

答えて

0

取得したい "タグライン"のインデックスを保持するグローバル変数が必要です。そのため、次のボタンを押すだけで、あなたはその後、第三にというように第二の要素にスキップ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ドキュメントにいくつの要素が存在するかを知っておく必要があります。だから、おそらく「キャッチフレーズ」属性を持つすべての要素を取得し、彼らは簡単に

' 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 
+0

初心者でを検索することができ、リストにそれらを維持することをお勧めします。すべての要素をリストボックスにロードするにはどうしたらよいですか? サイトにも25の要素があります。 – Dankosaurus

+0

リストボックスのDataSourceを、取得する要素または表示する文字列に設定するだけです。しかし、これは別の質問のための十分な資料です(投稿することをお勧めします) – Steve

+0

ありがとうございます!私が望むようにすべてが今働いています。助けてくれてありがとう! :) – Dankosaurus

関連する問題