Прокрутка WebBrowserControl вниз

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

аналогичный вопрос: Как прокрутить до конца System.Windows.Forms.WebBrowser?

infografnet 16.11.2012 22:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
8 842
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Я бы использовал свойство AutoScrollOffset и установил его в нижнем левом углу элемента управления WebBrowser, например:

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

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

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

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

Ответ принят как подходящий

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

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

Если вы делаете это в VB, не используйте Integer.MaxValue, вместо этого используйте Int16.MaxValue.

Andy 13.08.2011 18:37

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

которые не нужно прокручивать вниз, это похоже на твиттер :)

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);
            }
        }

Другие вопросы по теме