如何知道 WebBrowser 是否导航错误页面?

Coo*_*.Wu 5 c#

例如,我们导航到http://www.ggg111.com,这是一个错误 URL。但在 WebBrowser 中,它显示了一个错误页面:

找不到网页 
 HTTP 400  
   最可能的原因:
地址中可能存在输入错误。 
如果您点击了一个链接,它可能已经过时。 

   你可以尝试什么: 
     重新输入地址。  

     返回到前一页。 
     转到并查找您想要的信息。  

如何知道 WebBrowser 是否导航错误页面?

还检查这个:https : //sso.youshang.com/sso/userAuthnAction.do1

HTTP 状态 404 - /sso/userAuthnAction.do1
类型状态报告
消息/sso/userAuthnAction.do1
描述 请求的资源 (/sso/userAuthnAction.do1) 不可用。

Coo*_*.Wu 3

基于此控件:http://www.codeproject.com/KB/cpp/ExtendedWebBrowser.aspx

有 NavigateError 函数,在导航过程中发生错误时触发。这是我修改后的代码:

首先添加事件参数类:


public class NavigateErrorArgs : EventArgs
{
    public object StatusCode { get; set; }

    public NavigateErrorArgs()
            : base()
    { }

    public NavigateErrorArgs(object statusCode)
            : base()
    {
       this.StatusCode = statusCode;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在类 ExtendedWebBrowser 中添加委托和事件:


public delegate void NavigateErrorHandler(object sender, NavigateErrorArgs e);
public event NavigateErrorHandler NavigateError;

protected void OnNavigateError(NavigateErrorArgs e)
{
  if (NavigateError != null)
      NavigateError(this, e);
}

并修改类WebBrowserExtendedEvents中的方法:


public void NavigateError(object pDisp, ref object URL, ref object frame, ref object statusCode, ref bool cancel)
{
    _Browser.OnNavigateError(new NavigateErrorArgs(statusCode));
}
Run Code Online (Sandbox Code Playgroud)