2016-07-09 14 views
0

一連のURLを循環するフォーム上に「回転子」を作成しようとしていて、URLをWebBrowserコントロールに表示しています。次のコードはフォームを表示しますが、フォームは白/空白のままで、しばらくすると配列の最後のURLが表示されます。 MessageBoxを各URLの中間に置くと、停止が作成され、正常に動作し、各URLが表示されます。私はSleepMessageBoxの代わりに入れてみましたが、うまくいかなかった。私はまた、Sleepの時間を増やしてみましたが、それもうまくいきませんでした。どうすれば正しく動作させることができますか?VB.NETのWebBrowserコントロールで複数のURLを連続して開きます。

Sub Rotate() 

    Dim Urls() As String = {"www.stackoverflow.com", "www.google.com", "www.yahoo.com"} 
    Dim counter As Integer = 0 

    Form3.Show() 

    Do Until counter = 3 

     Form3.WebBrowser1.ScriptErrorsSuppressed = True 
     Form3.WebBrowser1.Navigate(Urls(counter))   
     'MessageBox.Show("Next") 
     counter = counter + 1 
     System.Threading.Thread.Sleep(2000) 

    Loop 

End Sub 

答えて

0

、コントロールがコントロール自体を再描画する機会を得るようにするには、URLを変更した後Application.DoEventsを呼び出すことができます。
しかし、より良い方法は、timerを使用して2秒ごとに起動し、イベントハンドラのURLを変更して、UIが応答し続けるようにすることです。
たとえば、フォームに新しいフィールドmyTimerを設定し、フォームの読み込みイベントでそれを初期化し、メソッドを呼び出すTickイベントで開始します。 Rotateが今では何度か呼び出されているので、counter変数をメソッドから外してフィールドにして、呼び出し間に値を保持する必要があります。私は通常、C#を書くのでうまくいけば、以下のいくつかのタイプミスをしなかった:)

Private WithEvents myTimer As System.Windows.Forms.Timer 
Private counter As Integer 

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
    ' ... your existing code ... 
    counter = 0 
    myTimer = New System.Windows.Forms.Timer 
    myTimer.Interval = 2000 
    myTimer.Enabled = True 
    myTimer.Start() 
End Sub 

Private Sub myTimerTick() Handles myTimer.Tick 
    Rotate() 
End Sub 

Sub Rotate() 
    Dim Urls() As String = {"www.stackoverflow.com", "www.google.com", "www.yahoo.com"} 
    WebBrowser1.ScriptErrorsSuppressed = True 
    WebBrowser1.Navigate(Urls(counter))   
    counter = counter + 1 
    If counter > 3 Then myTimer.Stop() 
End Sub 
+0

ありがとう。私がURLを開こうとしないと、あなたが提案した最初のアプローチがうまくいきます。たとえば、 "Form3.WebBrowser1.Navigate(Urls(counter))"を "Label1.Text = Urls(counter)"に置き換えると、ラベルは期待どおりに変更されます。ただし、「ナビゲート」の場合は、最後のURLのみが表示されます。また、2番目の提案の例を挙げることができますか? – user3080392

+0

私の答えを更新しました。私はそれが援助を望む – DAXaholic

+0

あなたの解決策は働いた。ありがとう!マイナーな調整を加えて答えを掲載しました。 – user3080392

関連する問題