tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル VB WebBrowserでページの切り替えが思うように出来ない
投稿日: 2015/08/14(Fri) 15:11
投稿者まつ
いつもお世話になっております。

VB2015を使用しています。

WebBrowserでWebページを切り替えながらHTMLを取得するコードを
作成しています。

下記コードのようにループでページを切り替える方法がうまく
いきません。
ページを切り替えるごとにHTMLを取得したいのですが,
Button1.Clickイベントが終わらないと全てのHTMLを取得出来ません。
なぜかNavigateの後にMsgBoxを入れるとその時点でページが変わり
HTMLを取得出来ます(MessageBox.Showでも可能)。
MsgBoxに似たイベントを発生させてページを自動的に切り替える方法
は無いでしょうか?
なお,EventArgsで空のイベントを発生させてみましたがダメでした。

仕方が無いので現状では順次タイマーイベントを発生させて都度HTML
を取得する方法で目的を達成していますがコードが煩雑のため単純
ループのような簡単な方法に変更したいです。

他,New WebBrowser で都度インスタンスを生成,Disposeする方法
があると思いますがログインしてセッションを保ったままページを
切り替えたいため,この方法は使えません。

Public Class Form1
  Private Sub Button1_Click(sender …) Handles Button1.Click

    Dim myUrl As String = Nothing

    For i As Integer = 1 To 2
      If i = 1 Then myUrl = " ttp://….co.jp/1.html"
      If i = 2 Then myUrl = " ttp://….co.jp/2.html"
      WebBrowser1.Navigate(myUrl)
      'MsgBox("読み込み")  'MsgBoxがあるとその時点で読み込まれる
    Next

  End Sub

  Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object,
                 ByVal e As WebBrowserDocumentCompletedEventArgs) _
                              Handles WebBrowser1.DocumentCompleted

    If e.Url = DirectCast(sender, WebBrowser).Url Then
      Dim html As String = WebBrowser1.Document.Body.InnerHtml
      Console.WriteLine(html)
    End If

  End Sub
End Class

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。