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 控件具有一个 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);
}
}
不隶属于 StackOverflow