WebBrowserControl 一番下までスクロール
-
09-06-2019 - |
質問
私は、System.Windows.Forms.WebBrowser コントロールを使用して、ユーザーと受信者間のメッセージを表示する単純なチャット アプリケーションに取り組んでいます。コントロールの DocumentText を更新するたびに、コントロールが自動的に一番下までスクロールするようにするにはどうすればよいですか?
解決
皆さん、ありがとう -- 私はあなたたち両方に賛成票を投じましたが、私の状況ではどちらもうまくいきませんでした。結局私がやったのは、
webCtrl.Document.Window.ScrollTo(0, int.MaxValue);
他のヒント
AutoScrollOffset プロパティを使用して、WebBrowser コントロールの左下に設定すると、次のようになります。
webCtrl.AutoScrollOffset = new Point(0, webCtrl.Height);
これはおそらくやりすぎですが、WebBrowser コントロールでスクリプトを呼び出して、body タグのスクロール プロパティを使用することもできます。またはウィンドウのscrollToメソッド。
スクリプトを呼び出すために、WebBrowser コントロールには DOM からのドキュメント オブジェクトを表す Document プロパティがあります。これには、実行する JavaScript の文字列を渡すことができる InvokeScript と呼ばれるメソッドがあります。
しかし...AutoScrollOffset プロパティが機能する場合...そうですね、私なら JavaScript を使う代わりにそれを使いたいと思います :)
スクロール位置を上部に維持したり、新しいメッセージを上部に挿入したりできます。
下までスクロールする必要はありません。Twitter のように見えます:)
user2:
new message ← a new message is insert on top
user1:
old message
public virtual void ScrollMessageIntoView()
{
System.Windows.Forms.Application.DoEvents();
if (browser == null || browser.IsDisposed)
return;
if (browser.Document == null)
{
browser.Document.Window.ScrollTo(0,
browser.Document.Body.ScrollRectangle.Height);
}
}
所属していません StackOverflow