2009-12-16 7 views
10

Sto utilizzando il componente WPF WebBrowser per visualizzare alcuni contenuti HTML molto semplici. Tuttavia, poiché non conosco le dimensioni del contenuto in anticipo, attualmente sto ottenendo barre di scorrimento sul controllo quando carico determinati set di dati.Impedisci barre di scorrimento con WebBrowser WPF che visualizza il contenuto

Fondamentalmente, come posso forzare (o altrimenti effettuare l'equivalente di forzare) il WebBrowser per espandere le dimensioni in modo che tutto il contenuto venga visualizzato senza la necessità di barre di scorrimento?

risposta

7

Immagino di poter ottenere larghezza e altezza del contenuto del componente del browser attraverso la sua proprietà Document che dovrebbe essere di tipo mshtml.HTMLDocument. Credo che dovresti essere in grado di utilizzare le proprietà body o documentElement per ottenere le dimensioni necessarie; smth come questo:

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

speranza che questo aiuti, riguarda

+0

+1. Suoni giusti :) – Anvaka

+0

Sfortunatamente WebBrowser.Document non sembra mai essere impostato. Questo potrebbe essere un effetto collaterale di come carico le pagine, non ne sono sicuro. –

+0

puoi pubblicare un po 'di codice su come stai caricando le tue pagine. thnx –

6

Il problema con la soluzione precedente è che cambia la dimensione di controllo e dal momento che il controllo del browser non può essere ritagliato ed è sempre in cima ad altre elementi WPF, può coprire gli altri elementi.

Ecco la mia soluzione:

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

saluti,

Assaf

+0

Non funziona per me; –