2

我正在使用 System.Windows.Forms.WebBrowser 控件开发一个简单的聊天应用程序,以显示用户和收件人之间的消息。每次更新控件的 DocumentText 时,如何让控件自动滚动到底部?

4

5 回答 5

5

谢谢大家——我投了你们俩的票,但都不适合我的情况。我最终做的是

webCtrl.Document.Window.ScrollTo(0, int.MaxValue);
于 2008-09-08T17:41:40.660 回答
2

我会使用 AutoScrollOffset 属性并将其设置在 WebBrowser 控件的左下角,例如:

webCtrl.AutoScrollOffset = new Point(0, webCtrl.Height);
于 2008-09-05T18:18:59.253 回答
2

这可能有点矫枉过正,但您也可以在 WebBrowser 控件上调用脚本,然后使用 body 标记的滚动属性。或者窗口的scrollTo方法。

为了调用脚本,WebBrowser 控件具有一个 Document 属性,该属性表示来自 DOM 的文档对象。它有一个称为 InvokeScript 的方法,您可以通过该方法传递要执行的 JavaScript 字符串。

但是......如果 AutoScrollOffset 属性有效......是的,我只是使用它而不是进入 JavaScript :)

于 2008-09-05T21:13:37.180 回答
0

您可以将滚动位置保持在顶部,并在顶部插入新消息。

不需要滚动到底部,它看起来像 twitter :)

user2:
  new message   ← a new message is insert on top

user1:
  old message
于 2014-03-12T02:32:57.283 回答
0
 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);
            }
        }
于 2016-11-24T10:03:13.087 回答