Я работаю над простым приложением чата с помощью System.Windows.Forms.WebBrowser Control для отображения сообщений между пользователем и получателем. Как заставить элемент управления автоматически прокручивать нижнюю часть каждый раз, когда я обновляю DocumentText элемента управления?WebBrowserControl Scroll to Bottom
ответ
Спасибо, ребята - Я голосовал вас обоих вверх, но ни будет работать за моя ситуация. То, что я закончил, было
webCtrl.Document.Window.ScrollTo(0, int.MaxValue);
Если вы делаете это в VB, не используйте Integer.MaxValue, используйте Int16 .MaxValue. – Andy 2011-08-13 14:37:06
Я хотел бы использовать свойство AutoScrollOffset и установить его в нижней левой части управления WebBrowser, так что-то вроде:
webCtrl.AutoScrollOffset = new Point(0, webCtrl.Height);
Это, вероятно, избыточна, но вы также можете вызвать скрипт на контроле WebBrowser, а затем используйте свойства прокрутки тега тела. Или метод scrollTo окна.
Чтобы вызвать скрипт, элемент управления WebBrowser имеет свойство Document, которое представляет объект документа из DOM. У него есть метод под названием InvokeScript, который можно передать строкой JavaScript для выполнения.
... Но если свойство AutoScrollOffset работает ... да, я бы просто использовать, что вместо того, чтобы попасть в JavaScript :)
Вы можете сохранить положение прокрутки сверху и вставить новое сообщение сверху.
, что не нужно прокручивать вниз, его внешний вид, как твиттер :)
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);
}
}
подобный вопрос: [? Как листать до конца System.Windows.Forms.WebBrowser] (HTTP: //stackoverflow.com/questions/990651/how-to-scroll-to-end-of-system-windows-forms-webbrowser) – infografnet 2012-11-16 18:17:52