2011-11-12 30 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; 
}