2013-10-04 53 views
0

使用WPF中的WebBrowser,如何检查URL中的更改?有没有甚至可以触发条件时被解雇?在下面我有一个按钮事件,将App.browserLinkCheck设置为目标URL,并打开WebBrowser实例。检测WPF中的URL更改WebBrowser

private void btNextWelcomeNewHire_Click(object sender, System.Windows.RoutedEventArgs e) 
{ 
    App.borwserLinkCheck = App._PasswordSyncWebLink; 
    webBrowser.Navigate(new Uri(App.borwserLinkCheck)); 
    //webBrowser.Navigating += webBrowser_Navigating; 
} 

回答

4

您可以使用Navigating事件检测甚至取消webBrowser中的导航。

您可以保存当前的WebBrowser网址,并将其与Navigating事件中收到的新网址进行比较,并比较它们是否已更改。

private Uri currentUri; 

    void myBrowser_Navigating(object sender, NavigatingCancelEventArgs e) 
    { 
     if (currentUri.AbsolutePath != e.Uri.AbsolutePath) 
     { 
      // Url has changed ... 

      // Update current uri 
      currentUri = e.Uri; 
     } 
    } 
+0

你好,谢谢你的快速反应。当我运行构建时,我得到

此错误“NullReferenceException被用户未处理” App.borwserLinkCheck = App._PasswordSyncWebLink; webBrowser.Navigate(new Uri(App.borwserLinkCheck)); 我在按钮事件中调用webBrowser,然后页面加载,我得到错误。 –

+0

@MarcinLimanski用你的代码更新你的问题,所以它会更简单地检测你的问题在哪里 –

+0

对NullReferenceException的任何建议是由用户未处理? –

0

感谢@Omribitan的例子,我已经成功地过度调整的代码来的NullException问题:

private String targetStringToCompare = "www.example.com"; 

void myBrowser_Navigating(object sender, NavigatingCancelEventArgs e) 
{ 
    if (e.Uri.AbsoluteUri.ToString() == targetStringToCompare) 
    { 
     // Do something when the change will be detected 
    } 
} 
+0

比较应该仍然可能使用'!=',就像在原始答案中一样。否则,你实际上并没有检测到'Uri'发生了变化,而是检查它是否保持不变。 – CryptoCat