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