0

我的项目中有一个 Web 浏览器控件。效果很好!但是,如果我断开与 Internet 的连接然后打开项目,IE 会打开并显示标准无法显示网页。

我希望我的项目中的 Web 浏览器控件显示此消息,并且在 Internet 连接丢失时不弹出 IE 浏览器窗口。

谢谢!

4

2 回答 2

2

我没有看到我的机器上打开了 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:”。当您看到这种情况发生时(并且不希望发生这种情况),您可以让浏览器指向本地源以显示消息。

于 2013-08-13T20:21:12.953 回答
2

您可以通过导入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");
        }
    }
}
于 2013-08-13T20:38:57.927 回答