0

私の WinForms アプリケーションには、System.Windows.Forms.WebBrowserコントロールのあるタブがあります。WebBrowser のプロパティを設定するコントロールがいくつかあり.Url、フォームが再描画されると、WebBrowser の.Refresh(WebBrowserRefreshOption.Completely)メソッドが呼び出されます。

ただし、フォームが再描画され、WebBrowser のコンテンツが変更されない場合があります。.Refresh( )で区切り.Urlます。 は前の URL です。どうしたの?

MSDNによると:

このプロパティの値を設定してすぐに再度取得すると、WebBrowser コントロールが新しいドキュメントを読み込む時間がない場合、取得される値は設定された値とは異なる場合があります。

あれ、特別じゃない?.Refresh( )コントロールが再描画する前に、「新しいドキュメントをロードする時間があった」まで待たないのはなぜですか? これを強制的に発生させる方法はありますか?

4

2 に答える 2

4

非常に特別なことをしているのでない限り、WBにそれ自体を再描画させることは意味がありません。それはそれ自身のコントロールであり、それ自身のハンドルを持っているので、それが必要であると考えるときはいつでもそれ自身を塗り直すことがかなり可能です。ReadyStateと完全に同期していない瞬間に再描画を強制しているため、「古い」URLを取得することが期待されます。

于 2008-10-25T01:05:24.603 に答える
1

「DocumentCompleted」イベントが発生したときに実行されるイベントハンドラーをコードに追加してみてください。次に、そこに更新コードを追加します。ここMSDNにコードの例がいくつかあります。このようにすると、ページが読み込まれたかどうかを推測する時間が失われることはなく、準備ができたらすぐに処理を続行できます。

http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.documentcompleted.aspx

于 2008-10-25T00:51:02.650 に答える