14

WebBrowserコントロールを介してWebページを表示する.NetFromsアプリケーションがあります。

コントロールに「ページが見つかりません」または「ウェブページを表示できません」というエラーが表示されているかどうかを検出できる方法はありますか?エラーイベントハンドラーはないようです。

4

2 に答える 2

21

WebBrowser ウィンドウ フォーム コントロールは、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            
}
于 2008-12-15T15:38:56.750 に答える
9

SHDocVw dll への参照を設定せずにこれを解決する別の方法を見つけました。

MSDN のWeb ブラウザーの CreateSink メソッドを参照してください。

于 2009-11-04T23:02:01.200 に答える