2011-11-12 74 views
1

我無法弄清楚如何捕獲WebBrowser控件上的導航事件。基本上我想弄清楚當用戶點擊頁面上的鏈接時如何觸發進度條顯示。C# - WP7 WebBrowser瀏覽事件處理程序

這裏是我用來顯示進度條,然後將其隱藏在頁面加載的代碼。有人可以幫助我與導航的事件處理程序?

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     progressBar.IsIndeterminate = true; 
     progressBar.Visibility = Visibility.Visible; 
     webBrowser.Navigate(new Uri(MY_URL, UriKind.Absolute)); 
     webBrowser.LoadCompleted += new System.Windows.Navigation.LoadCompletedEventHandler(PageLoadCompleted); 
     webBrowser.Navigating = ? 
    } 
    private void PageLoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e) 
    { 
     progressBar.IsIndeterminate = false; 
     progressBar.Visibility = Visibility.Collapsed; 
    } 

回答

1

您要查找的文檔is here。你可以寫

webBrowser.Navigating += webBrowser_Navigating; 
// ... 

void webBrowser_Navigating(object sender, NavigatingEventArgs e) 
{ 
    // ... 
} 
+0

完美謝謝!!!! – Joe

+0

稍遲,但應該是:+ = new EventHandler (webBrowser_Navigating); – jyavenard

+0

@jyavenard,實際上,不,你不需要明確地安裝EventHandler <>。 C#編譯器將爲您編寫該代碼。它可以做到這一點,因爲沒有別的(沒有其他類型)委託可以。所有其他的事情都是平等的,我總是喜歡寫更少的代碼,以便我的意圖更清晰,不會因爲額外的混亂而丟失。 –

0

VisualStuart的答案幫我解決了我的問題。

我現在工作的代碼如下:

private void MyButton1_Click(object sender, RoutedEventArgs e) 
{ 
    MyprogressBar.IsIndeterminate = true; 
    MyprogressBar.Visibility = Visibility.Visible; 
    string site = MyTextBox1.Text; 
    webBrowser1.Navigate(new Uri(site, UriKind.Absolute)); 
    webBrowser1.Navigating += webBrowser1_Navigating; 
    webBrowser1.LoadCompleted += new System.Windows.Navigation.LoadCompletedEventHandler(webBrowser1_LoadCompleted); 
} 

private void webBrowser1_Navigating(object sender, NavigatingEventArgs e) 
{ 
    MyTextBox1.Text = e.Uri.ToString(); 
    MyprogressBar.IsIndeterminate = true; 
    MyprogressBar.Visibility = Visibility.Visible; 
}