我的项目中有一个 Web 浏览器控件。效果很好!但是,如果我断开与 Internet 的连接然后打开项目,IE 会打开并显示标准无法显示网页。
我希望我的项目中的 Web 浏览器控件显示此消息,并且在 Internet 连接丢失时不弹出 IE 浏览器窗口。
谢谢!
我的项目中有一个 Web 浏览器控件。效果很好!但是,如果我断开与 Internet 的连接然后打开项目,IE 会打开并显示标准无法显示网页。
我希望我的项目中的 Web 浏览器控件显示此消息,并且在 Internet 连接丢失时不弹出 IE 浏览器窗口。
谢谢!
我没有看到我的机器上打开了 IE,但我确实看到了 WebBrowser 控件中显示的正常 IE 错误消息。
Navigated
我相信您可以通过处理 WebBrowser 的事件并查看文档的 url 属性来检测网页未正确加载。这是一些 XAML:
<WebBrowser Source="http://www.google.com" Navigated="WebBrowser_Navigated" />
还有一些代码(我不做VB,抱歉):
private void WebBrowser_Navigated(object sender, NavigationEventArgs e) {
var browser = sender as WebBrowser;
if (browser != null) {
var doc = browser.Document as HTMLDocument;
if (doc != null)
MessageBox.Show(doc.url);
}
}
在我的机器上,当导航失败时,我得到了这个 URL:
res:ieframe.dll/navcancl.html# http://www.google.com
虽然我认为我们不能指望 URL 一直都是这样,但我敢打赌,您可以检查它并确定它不是您要查找的 URL。事实上,“http:”现在是“res:”。当您看到这种情况发生时(并且不希望发生这种情况),您可以让浏览器指向本地源以显示消息。
您可以通过导入System.Net.NetworkInformation命名空间来做到这一点。NetworkChange 类公开了一个名为NetworkAvailabilityChanged的事件,该事件负责通知应用程序连接状态发生变化。请找到以下代码段。如果有用请标记答案。
public partial class MainWindow : Window
{
public bool IsAvailable { get; set; }
public MainWindow()
{
InitializeComponent();
NetworkChange.NetworkAvailabilityChanged += NetworkChange_NetworkAvailabilityChanged;
}
void NetworkChange_NetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
{
IsAvailable = e.IsAvailable;
}
private void BrowseButton_Click(object sender, RoutedEventArgs e)
{
if (IsAvailable)
{
WebBrowser1.Navigate(TextBox1.Text);
}
else
{
MessageBox.Show("Your Popup Message");
}
}
}