C# - WP7 Webブラウザナビゲータイベントハンドラ

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
追加された 編集された
ビュー: 1

2 答え

あなたが求めるドキュメントはここにあります。あなたは書ける

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

void webBrowser_Navigating( object sender, NavigatingEventArgs e )
{
 //...
}
1
追加された
完璧な感謝!!!!
追加された 著者 Joe,
@ jyavenard、実際には、EventHandler <>を明示的に宣言する必要はありません。 C#コンパイラはそれをあなたに書いてくれます。代理人ができる他のタイプ(他のタイプはありません)がないので、これを行うことができます。他のすべてのものは平等で、私はいつもより少ないコードを書いて、私の意図がより明確になり、余分な混乱で失われないようにすることを好みます。
追加された 著者 Visual Stuart,
明確にするために、コードはC#コンパイラ(Visual Studioではなく)によって生成され、コードの実行時にではなくコードのコンパイル時に実行されます。 C#製品チームは、冗長コードを記述する必要がないように、自動実装の代理人を特別に追加しました。 C#3.0以降には、自動実装されたプロパティ、ラムダ、型推論など、記述する必要のあるコードの量を減らすための機能がいくつかあります。別のものを書く必要がないかぎり、コンパイラが書き込むものを複製するのではなく、コンパイラにこの作業をさせてください。
追加された 著者 Visual Stuart,
遅いですが、これは次のようにする必要があります:+ = new EventHandler (webBrowser_Navigating);
追加された 著者 jyavenard,
それは正しいですが、これはコードを開始するたびにVSによって生成されたコードです。だから私はそれを行う適切な方法だと思った:)
追加された 著者 jyavenard,
遅いコメントがもう1つありますが、入力を開始するときにVisual Studioが提案するコードを意味していたと思います。
追加された 著者 Aleksei Kosozhikhin,

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;
}
0
追加された