.net WebBrowser控件滚动到底部

.net WebBrowser控件滚动到底部,.net,user-controls,wysiwyg,.net,User Controls,Wysiwyg,我正在开发一个简单的聊天应用程序,使用System.Windows.Forms.WebBrowser控件显示用户和收件人之间的消息。如何使控件在每次更新控件的DocumentText时自动滚动到底部?我将使用AutoScrolOffset属性并将其设置为WebBrowser控件的左下角,例如: webCtrl.AutoScrollOffset = new Point(0, webCtrl.Height); 这可能有些过分,但您也可以调用WebBrowser控件上的脚本,然后使用body标记的滚

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

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

webCtrl.AutoScrollOffset = new Point(0, webCtrl.Height);

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

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

但是。。。如果AutoScrolOffset属性有效。。。是的,我只是用它来代替JavaScript:)

谢谢大家——我投票支持你们两个,但两个都不适合我的情况。我最后做的是

webCtrl.Document.Window.ScrollTo(0, int.MaxValue);

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

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


如果在VB中执行此操作,请不要使用Integer.MaxValue,而是使用Int16.MaxValue。类似问题:
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);
            }
        }