2016-06-27 28 views
0

を起動していないことは、以下のコードを参照してください:WebBrowserコントロールは、Webページ

Imports System.Windows.Forms 
Imports System.Threading 

Public Class clsLoadWebpageBehindScenes 
    Private boolDocumentCompleted As Boolean 
    ' Private intTest As Integer 

    Private Sub WebBrowser_DocumentCompleted(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs) 
     Try 
      Dim BrowsePage As WebBrowser = DirectCast(sender, WebBrowser) 
      'BrowsePage.ClientSize = New Size(BrowsePage.Document.Body.ScrollRectangle.Width, BrowsePage.Document.Body.ScrollRectangle.Height) 
      BrowsePage.ScriptErrorsSuppressed = True 
      BrowsePage.ScrollBarsEnabled = True 
      BrowsePage.BringToFront() 
      'compressImage(ConvertedImage) 
      'MsgBox("Test") 
      boolDocumentCompleted = True 
     Catch ex As Exception 
      'MsgBox("Test") 
      Throw 
     End Try 
    End Sub 

    Public Sub LoadPage() 
     'Me.PageUrl = PageUrl 
     Dim thrCurrent As New Thread(New ThreadStart(AddressOf BrowsePage)) 
     thrCurrent.SetApartmentState(ApartmentState.STA) 
     thrCurrent.Start() 
     thrCurrent.Join() 
    End Sub 

    Private Sub BrowsePage() 
     Try 
      Dim BrowsePage As New WebBrowser() 
      BrowsePage.ScrollBarsEnabled = False 
      AddHandler BrowsePage.DocumentCompleted, AddressOf _ 
    WebBrowser_DocumentCompleted 
      BrowsePage.ScrollBarsEnabled = True 
      BrowsePage.ScriptErrorsSuppressed = False 
      'BrowsePage.DocumentText = "http://pcname/app/TestWebBrowser.aspx" 
      BrowsePage.Navigate("http://pcname/app/TestWebBrowser.aspx") 
      While boolDocumentCompleted = False 
       'intTest = intTest + 1 
       'While BrowsePage.ReadyState <> WebBrowserReadyState.Complete 
       Application.DoEvents() 
      End While 
      BrowsePage.Dispose() 
     Catch ex As Exception 
      Throw 
     End Try 
    End Sub 
End Class 

を私は呼び出しているWindowsフォームアプリ、持っている:LoadPage()

私に関する限りを。次のWebページを呼び出す必要があります。

http://pcname/app/TestWebBrowser.aspxしかし、これは起こっていません。私は、ウェブページにThread.Sleep(30000)を追加した、しかし、すぐに(それが原因Thread.Sleep(30000)の少なくとも30秒を取る必要があります。コードが間違っているか?起動時にページをロードしていないブラウザのよう

+0

私はVBプログラミングの新しいルールを思いつきました。あなたのコードでThread.sleep()を呼び出す必要がある場合は、おそらく何か間違っているでしょう。 – ChicagoMike

答えて

0

、すべての場合に到達するWebBrowser_DocumentCompleted例えば、Public Sub LoadPage()からPublic Sub LoadPage(sender as Object, e as EventArgs) Handles MyBase.Loadへの変更は、スタートアップの問題で読み込まれないように処理する必要がありますが、その唯一の問題は私が見ることができるものではなく、複数のスレッドを使用している場合は、呼び出すことなく直接別のスレッドから.Navigateを呼び出すことはできません(ここで例を参照してください:Microsoft Thread-Safe Calls to Form Controls)簡単な方法は、私はこれを見た私のプロジェクトのいくつかでブラウザを使用しようとしていたので、多くの場所が見られたので、私はこのブラウザを見ました:

ウェブブラウザーはデフォルトでは非同期であるため、スレッドする必要はありません。また

ここでは、このライン:Dim BrowsePage As New WebBrowser()あなたは、新しいブラウザコントロールを作成しますが、あなたはMe.Controls.Add(BrowsePage)をフォームに追加しませんが...私はそれを考えることができる最後のものは、そのベストということでしょうアドバイスをもう少しだろうあなたが気づいたSubと同じ名前になるように変数/コントロールを薄暗くしないでください。Private Sub BrowsePage() & Dim BrowsePage As New WebBrowser()は、コードを書くときに誤解しないように2つの異なる名前にするのが最善でしょう。変数を使用することを意味します。

関連する問題