我的项目中有一个Web浏览器控件。效果很好!但是,如果我松开连接到互联网然后打开项目,IE打开并显示标准无法显示网页。
我更喜欢我的项目中的Web浏览器控件显示此消息,而不是在互联网连接丢失时弹出IE浏览器窗口。
谢谢!
答案 0 :(得分:2)
我没有在我的机器上看到IE打开,但我确实看到WebBrowser控件中显示正常的IE错误消息。
我相信您可以通过处理WebBrowser的Navigated
事件并查看文档的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:”。当您看到这种情况发生时(并且不要指望它),您可以使浏览器指向本地源以显示消息。
答案 1 :(得分: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");
}
}
}