2008-09-05 5 views
2

Я работаю над простым приложением чата с помощью System.Windows.Forms.WebBrowser Control для отображения сообщений между пользователем и получателем. Как заставить элемент управления автоматически прокручивать нижнюю часть каждый раз, когда я обновляю DocumentText элемента управления?WebBrowserControl Scroll to Bottom

+0

подобный вопрос: [? Как листать до конца 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

ответ

5

Спасибо, ребята - Я голосовал вас обоих вверх, но ни будет работать за моя ситуация. То, что я закончил, было

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

Если вы делаете это в VB, не используйте Integer.MaxValue, используйте Int16 .MaxValue. – Andy 2011-08-13 14:37:06

2

Я хотел бы использовать свойство AutoScrollOffset и установить его в нижней левой части управления WebBrowser, так что-то вроде:

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

Это, вероятно, избыточна, но вы также можете вызвать скрипт на контроле WebBrowser, а затем используйте свойства прокрутки тега тела. Или метод scrollTo окна.

Чтобы вызвать скрипт, элемент управления WebBrowser имеет свойство Document, которое представляет объект документа из DOM. У него есть метод под названием InvokeScript, который можно передать строкой JavaScript для выполнения.

... Но если свойство AutoScrollOffset работает ... да, я бы просто использовать, что вместо того, чтобы попасть в JavaScript :)

0

Вы можете сохранить положение прокрутки сверху и вставить новое сообщение сверху.

, что не нужно прокручивать вниз, его внешний вид, как твиттер :)

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

user1: 
    old message 
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); 
      } 
     }