2013-10-04 54 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