DOBON.NET DOBON.NETプログラミング掲示板過去ログ

WebBrowserの更新処理待ちについて

環境/言語:[xp/vb2005]
分類:[.NET]

以下のサンプルコードわ使わせていただいているのですが、WebBrowserDocumentCompletedの使い方がよくわかりません。

http://jumbofoot.cocolog-nifty.com/yass_vbnet_tips/2006/09/webbrowser_1de3.html



下の2つを試してみたのですが、


Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted

MessageBox.Show("表示完了", "完了", MessageBoxButtons.OK)

End Sub

'WebBrowser1.DocumentCompletedの部分でWithEventの変数が必要ですとエラーが出ます。





Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)

MessageBox.Show("表示完了", "完了", MessageBoxButtons.OK)

End Sub


'何も反応せず


読み込み待ちの処理をしたいのですが、どうしたらいいですか?
■No29023に返信(ザナドゥさんの記事)
> 'WebBrowser1.DocumentCompletedの部分でWithEventの変数が必要ですとエラーが出ます。

エラーの通りです。
Dim WebBrowser1 As New WebBrowser
のところにWithEventを追加してください。
■No29025に返信(あああさんの記事)
> ■No29023に返信(ザナドゥさんの記事)
>>'WebBrowser1.DocumentCompletedの部分でWithEventの変数が必要ですとエラーが出ます。
>
> エラーの通りです。
> Dim WebBrowser1 As New WebBrowser
> のところにWithEventを追加してください。


あああさん、有難うございます。
おっしゃる通り、 Private WithEventsを追加したら解決しました。

有難うございます。
解決済み!
2011/09/10(Sat) 18:27:33 編集(投稿者)
2011/09/10(Sat) 18:26:33 編集(投稿者)

追加質問なのですが、更新処理で何らかの形でエラーが起こり、更新状態がずーと続いてしまう場合があると思うのですが、

その場合1分たったら自動で強制的に更新終了させるか、自動的にDocumentCompletedから抜けるなんて方法はできます
でしょうか?
■No29027に返信(ザナドゥさんの記事)

> 追加質問なのですが、更新処理で何らかの形でエラーが起こり、更新状態がずーと続いてしまう場合があると思うのですが、

更新処理のエラーとは何のことでしょう?Webサイト側の更新処理のエラー?

エラーが起こり、更新状態がずっと続くとは、具体的にどのようなケースでしょうか?
■No29030に返信(タラオさんの記事)
>
> 更新処理のエラーとは何のことでしょう?Webサイト側の更新処理のエラー?
>
> エラーが起こり、更新状態がずっと続くとは、具体的にどのようなケースでしょうか?

返信有難うございます。

Webサイト側のエラーになります。
javascriptなどを使っている場合、ずーと読み込み状態が続いてしまうなんてことはないでしょうか?
■No29037に返信(ザナドゥさんの記事)

> 返信有難うございます。
>
> Webサイト側のエラーになります。
> javascriptなどを使っている場合、ずーと読み込み状態が続いてしまうなんてことはないでしょうか?

javascriptのエラーが発生した場合のことでしょうか?
この場合でも、DocumentCompletedはきちんと発生します。
ただし、HTML読み込み中にjavascriptのエラー(例えばBODY内にdocument.writeなどをしていてそれがスクリプトエラーになる)があると、
DocumentCompleted前にエラーのメッセージボックスが表示され、これを閉じないとDocumentCompletedが発生しません。
また、BODYのonloadイベントでjavascriptが実行される場合、スクリプトエラーがある場合にはDocumentCompletedイベントの後に
エラーのメッセージボックスが表示されますが、これを閉じないとHTMLDocument内の操作が行えない場合があります。
スクリプトエラーが発生してもこれを無視していいのであれば、WebBrowserのScriptErrorsSuppressedプロパティをTrue
(エラーのメッセージボックスを表示しない)にすればいいと思います。

Webサイト側のエラーということなので、403や500のエラーのことかとも思ったのですが、
その場合でもDocumentCompletedは発生します。
■No29038に返信(タラオさんの記事)

> javascriptのエラーが発生した場合のことでしょうか?
> この場合でも、DocumentCompletedはきちんと発生します。
> ただし、HTML読み込み中にjavascriptのエラー(例えばBODY内にdocument.writeなどをしていてそれがスクリプトエラーになる)があると、
> DocumentCompleted前にエラーのメッセージボックスが表示され、これを閉じないとDocumentCompletedが発生しません。
> また、BODYのonloadイベントでjavascriptが実行される場合、スクリプトエラーがある場合にはDocumentCompletedイベントの後に
> エラーのメッセージボックスが表示されますが、これを閉じないとHTMLDocument内の操作が行えない場合があります。
> スクリプトエラーが発生してもこれを無視していいのであれば、WebBrowserのScriptErrorsSuppressedプロパティをTrue
> (エラーのメッセージボックスを表示しない)にすればいいと思います。
>
> Webサイト側のエラーということなので、403や500のエラーのことかとも思ったのですが、
> その場合でもDocumentCompletedは発生します。



タラオさん、有難うございます。
なるほど、「ScriptErrorsSuppressedプロパティ」でいけたのですね。


有難うございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板