2009-12-16 2 views
10

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

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

ответ

7

Я думаю, вы можете получить ширину и высоту содержимого компонента webbrowser через его свойство 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; 
} 

надеюсь, что это помогает, считает

+0

+1. Звучит правильно :) – Anvaka

+0

К сожалению, WebBrowser.Document никогда не устанавливается. Это может быть побочным эффектом загрузки страниц, я не уверен. –

+0

можете ли вы опубликовать какой-либо код того, как вы загружаете свои страницы. thnx –

6

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

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

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

С уважением,

Ассаф

+0

Это не работает для меня; –

Смежные вопросы