2

我有一個VB項目是一個Web瀏覽器。

如果WebBrowser1的網址是google.com在任何時候,我想它的網址更改爲bing.com(這些URL例如僅!)

無限循環無崩潰

Do 
     If WebBrowser1.Url = ("http://www.google.com") Then 
      WebBrowser1.Navigate(New Uri("http://www.bing.com")) 
     End If 
    Loop 

上面就是我已經測試代碼但每次使用它都會崩潰並導致程序無法響應。

有沒有人知道這樣做的更好方法?目前我是新手程序員。

回答

3

使用事件驅動的方法。

而不是無限循環來檢查WebBrowser1.Url變化,簡單地處理在適當的委託一個WebBrowser1.Url -changed事件 - 這是 *這樣的:

Private Sub webBrowser1_Navigating(_ 
    ByVal sender As Object, ByVal e As WebBrowserNavigatingEventArgs) _ 
    Handles webBrowser1.Navigating 

    If e.Url.OriginalString = "http://www.google.com/" Then 
     WebBrowser1.Stop() ' Thanks, @Steve. 
     WebBrowser1.Url = New Uri("http://www.bing.com") 
    End If 
End Sub 

的條件檢查將僅在必要的時候會發生,避免程序癱瘓。

查看System.Windows.Forms.WebBrowser.Navigating事件的參考; help with events and delegates in VB.NET也廣泛可用。

*我說就像因爲我沒有確定我機器上的每一個小細節,只是提供了一般方向。此外,檢查確切的URL匹配可能不如有點更靈活 - 例如,不會假設HTTP URL方案並說明HTTPS URL方案的可能性等。

+1

在Navigating事件中添加對Stop()的調用。 – Steve