2

WebBrowser コンテンツを読み込もうとしています。その後、テキストを追加して一番下までスクロールしたいと考えています。

これが私のコードの例です:

webBrowser1.Url = new System.Uri("file:///" + filePath);
webBrowser1.Document.Body.InnerHtml += text;
webBrowser1.Document.Body.ScrollTop = webBrowser1.Document.Body.ScrollRectangle.Height;

実行すると、未処理の例外「オブジェクト参照がオブジェクトのインスタンスに設定されていません」が発生します。または、スクロールを行う行にコメントを付けると、WebBrowser の前のコンテンツにテキストが追加され、新しいコンテンツに移動します。

したがって、サンプルコードの最初の行の後に次のように記述します。

while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();

しかし、それはすべてを台無しにします。私のアプリケーションは、たとえば、同じメソッドを一度呼び出す必要があるのに、何度も呼び出すなど、非常に奇妙なことをしています。

解決策はありますか?

4

2 に答える 2

7

DocumentCompletedあなたは実際にイベントを購読したいと思います。
Application.DoEvents保留中の Windows メッセージ ループ アイテムのみを処理します。

どちらの場合でも、呼び出しを使用する前に、呼び出しの潜在的な欠点を理解していることを確認してくださいDoEvents

于 2011-07-22T19:33:55.633 に答える
2

DoEvents()ここでは悪い解決策です。明示的なスレッドを使用するかBackgroundWorker、ページをロードし、UI スレッドを残して他の処理を行う必要があります。

于 2011-07-22T19:32:53.980 に答える