WPF中使用WebBrowser控件的刷新问题
WebBrowser有三种打开网页的方法Navigate、NavigateToStream和NavigateToString。
使用WebBrowser.Navigate打开的网页在用户执行刷新操作后没有问题,但是使用另外两个方法打开的网页,刷新后就不load了。而且WPF里没有实现对WebBrowser的Refresh事件的监听。
一个比较简单的解决方法是,使用RoutedEvent给WebBrowser的KeyDownEvent事件增加一个代理。
代码如下:
xaml中:
<WebBrowser x:Name ="wb"/>
cs中:
public MainWindow()
{
InitializeComponent();
wb.AddHandler(WebBrowser.KeyDownEvent, new RoutedEventHandler(wb_KeyDown), true);
}
private void wb_KeyDown(object sender, RoutedEventArgs e)
{
KeyEventArgs ke = (KeyEventArgs)e;
if(ke.Key==Key.F5)
{
Uri uriMap = new Uri(@"pack://application:,,,/amap.html", UriKind.Absolute);
Stream source = Application.GetResourceStream(uriMap).Stream;
wb.NavigateToStream(source);
}
}

本文讨论了在WPF中使用WebBrowser控件时遇到的刷新问题,特别是通过NavigateToString和NavigateToStream方法加载网页后,刷新操作导致页面不再加载。由于WPF未提供对WebBrowser控件Refresh事件的监听,作者提出了一个简单的解决策略,即利用Navigating事件作为刷新代理,确保页面能正确重载。

被折叠的 条评论
为什么被折叠?



