我有一个VB项目,它是一个Web浏览器。
如果WebBrowser1的网址随时都是google.com我想将其网址更改为bing.com(这些网址仅供参考!)
Do
If WebBrowser1.Url = ("http://www.google.com") Then
WebBrowser1.Navigate(New Uri("http://www.bing.com"))
End If
Loop
上面是我测试的代码,但每次使用它都会崩溃并导致程序无法响应。
有人知道更好的方法吗?目前我是一名新手程序员。
答案 0 :(得分:3)
使用事件驱动的方法。
而不是无限循环检查WebBrowser1.Url
更改,只需在适当的委托中处理WebBrowser1.Url
- 已更改的事件 - *这样:
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也广泛使用。
*我说喜欢因为我没有确定机器上的每一个小细节,只是提供了一般方向。此外,检查确切的网址匹配可能没有那么有用的东西 - 例如不承担HTTP URL方案并考虑HTTPS URL方案的可能性等。