質問

私は、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);
            }
        }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top