2016-07-09 2 views
0

일련의 URL을 순환하는 양식에서 "회전 자"를 만들고이 URL을 WebBrowser 컨트롤에 표시하려고합니다. 다음 코드는 내 양식을 표시하지만 양식은 흰색/공백으로 유지되고 잠시 후 배열의 마지막 URL이 나타납니다. 각 URL 사이에 MessageBox을 삽입하면 중지가 생성되어 작동하고 각 URL이 표시됩니다. 나는 MessageBox 대신 Sleep을 넣으려고했으나 제대로 작동하지 않았습니다. 나는 또한 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를 호출 할 수 있습니다.
그러나 더 나은 방법은 매 2 초마다 발생하는 timer을 사용하고 UI가 응답하도록 이벤트 처리기에서 URL을 변경하는 것입니다.
예를 들어 양식에 새 필드 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 만 표시됩니다. 또한 두 번째 제안의 예를 들어 줄 수 있습니까? – user3080392

+0

내 대답이 업데이트되었습니다. 도움이 되었기를 바랍니다. – DAXaholic

+0

당신의 솔루션이 효과가있었습니다. 감사! 사소한 조정을하고 내 대답을 게시했습니다. – user3080392