2011-11-12 13 views
1

WebBrowserコントロールでNavigatingイベントをキャッチする方法を理解できません。基本的に私は、ユーザーがページ上のリンクをクリックしたときにどのように進行状況バーが表示されるかを把握しようとしています。WP7 WebBrowser Navigatingイベントハンドラ

ここでは、プログレスバーを表示し、読み込まれたページに非表示にするコードを示します。誰かがナビゲートするためのイベントハンドラを手伝ってくれますか?

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; 
}