我正在开发一个简单的聊天应用程序,使用 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 控件具有一个 Document 属性,该属性表示 DOM 中的文档对象。它有一个名为 InvokeScript 的方法,您可以传递要执行的 JavaScript 字符串。

但...如果 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