.net - 我可以在使用 .Net WebBrowser 控件时检测错误吗?

标签 .net winforms com webbrowser-control

我有一个 .Net Froms 应用程序,它通过 WebBrowser 控件显示网页。

无论如何我可以检测控件是否显示“找不到页面”或“无法显示网页”错误?
似乎没有任何错误事件处理程序。

最佳答案

WebBrowser windows 窗体控件是 Internet Explorer 的包装器,它不公开底层 ActiveX 控件的所有功能,尤其是 NavigateError 事件。这是一个解决方法:

首先向您的项目添加对 SHDocVw.dll 的引用(添加引用窗口的 COM 选项卡)。然后您可以执行以下操作来捕获错误:

private void button1_Click(object sender, EventArgs e)
{
    SHDocVw.WebBrowser instance = (SHDocVw.WebBrowser)webBrowser1.ActiveXInstance;
    instance.NavigateError += new SHDocVw.DWebBrowserEvents2_NavigateErrorEventHandler(instance_NavigateError);
    webBrowser1.Navigate("http://www.google.com/foo");
}

void instance_NavigateError(object pDisp, ref object URL, ref object Frame, ref object StatusCode, ref bool Cancel)
{
    // Do whatever you want with the error            
}

关于.net - 我可以在使用 .Net WebBrowser 控件时检测错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/368612/

相关文章:

c# - 计时器延迟随着时间的推移而退化或变得不一致?

.net - 在 Controller 文件夹中添加子文件夹 - .net webapi

c# - 复选框(取消选中所有其他复选框

c# - 如何检查 DataGridView 是否包含列 "x"并且列 "x"是否可见?

c# - 在多个线程上运行 COM 组件控件

c# - C# 中的共享对象用于 python 脚本

c# - FakeItEasy 配置 fake 以抛出异常并在下一次调用时返回值

c# - 如何在运行时移动 mousemove 上的控件?

c# - 如何在 C# 中获取指向 IUnknown 的指针

c++ - 如何正确地将 _bstr_t 重置为 `NULL`