Запретить полосы прокрутки с помощью WPF WebBrowser, отображающего содержимое - PullRequest
10 голосов
/ 16 декабря 2009

Я использую компонент WPF WebBrowser для отображения очень простого HTML-контента. Однако, поскольку я заранее не знаю размер содержимого, при загрузке определенных наборов данных у меня появляются полосы прокрутки в элементе управления.

В принципе, как я могу заставить (или иным образом повлиять на принудительное) расширение WebBrowser по размеру, чтобы весь контент отображался без использования полос прокрутки?

Ответы [ 2 ]

7 голосов
/ 16 декабря 2009

Полагаю, вы можете получить ширину и высоту содержимого компонента веб-браузера через его свойство Document, которое должно иметь тип mshtml.HTMLDocument Я считаю, что вы должны иметь возможность использовать свойства body или documentElement для получения необходимых размеров; что-то вроде этого:

mshtml.HTMLDocument htmlDoc = webBrowser.Document as mshtml.HTMLDocument;
if (htmlDoc != null && htmlDoc.body != null)
{
    mshtml.IHTMLElement2 body = (mshtml.IHTMLElement2)htmlDoc.body;
    webBrowser.Width = body.scrollWidth;
    webBrowser.Height = body.scrollHeight;
}

надеюсь, это поможет, с уважением

6 голосов
/ 25 марта 2010

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

Вот мое решение:

Dim body = CType(WebBrowserControl.Document, mshtml.HTMLDocumentClass)
body.documentElement.style.overflow = "hidden"

С уважением,

Ассаф

...