прокрутка управления веб-браузером работает, но затем возвращается к 0 - PullRequest
0 голосов
/ 25 октября 2018

Итак, я пытаюсь показать пользователям предварительный просмотр некоторого HTML-кода, который они набрали, используя элемент управления веб-браузера для его визуализации при изменении HTML-кода.Это прекрасно работает, за исключением того, что браузер прокручивается в верх после каждого изменения.Поэтому я вставил это в:

    private void txtTemplateText_TextChanged(object sender, EventArgs e)
    {
        int top = 0;
        if (this.webBrowser.Document != null) top = this.webBrowser.Document.Body.ScrollTop;
        this.webBrowser.DocumentText = this.txtTemplateText.Text;
        if (this.webBrowser.Document != null) this.webBrowser.Document.Window.ScrollTo(0, top);
    }

в событии изменения текста в текстовом поле, где они вводят HTML.Если я перейду через этот код, все работает правильно.Значения - это то, что я ожидаю.Когда я выполняю строку ScrollTo, все выглядит правильно, но когда я F10 с закрывающей скобки, позиция прокрутки элемента управления браузера возвращается к 0, даже если после этой строки не выполняется дополнительный код.

ЕслиЯ жестко закодировал значение в 1000 (вместо переменной top), я действительно вижу правильную позицию прокрутки и затем возвращаюсь к 0.

Я не могу представить, что сбрасывает это значениеи заставляя прокручиваемое положение меняться после того, как оно было правильным.

1 Ответ

0 голосов
/ 25 октября 2018

Не могу поверить, что это сработало.Мне пришлось поместить эту строку перед строкой ScrollTo:

Application.DoEvents(); // must have this so document has been loaded before trying to set scroll, otherwise it goes to top

Я предполагаю, что документ на самом деле не загружен (даже при пошаговом выполнении), поэтому настройка свойства scroll при этом не работаетточка, потому что нечего прокручивать, даже если она выглядит так, как будто есть.

...