2009-12-16 3 views
10

Ich verwende die WPF WebBrowser Komponente, um einige sehr einfache HTML-Inhalte anzuzeigen. Da ich die Inhaltsgröße jedoch nicht im Voraus kenne, erhalte ich gerade Bildlaufleisten auf dem Steuerelement, wenn ich bestimmte Datasets lade.Verhindern Bildlaufleisten mit WPF WebBrowser Anzeige von Inhalt

Wie kann ich den WebBrowser im Allgemeinen so erzwingen (oder auf andere Weise bewirken, dass er forciert wird), so dass der gesamte Inhalt angezeigt wird, ohne dass Bildlaufleisten erforderlich sind?

Antwort

7

Ich denke, Sie können Breite und Höhe des Inhalts der Webbrowser-Komponente über seine Document-Eigenschaft erhalten, die vom Typ mshtml.HTMLDocument sein sollte. Ich glaube, dass Sie in der Lage sein sollten, body- oder documentElement-Eigenschaften zu verwenden, um erforderliche Größen zu erhalten. smth wie folgt aus:

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

hoffe, das hilft, sieht

+0

+1. Klingt richtig :) – Anvaka

+0

Leider scheint WebBrowser.Document nie eingestellt zu sein. Dies kann ein Nebeneffekt davon sein, wie ich Seiten lade, ich bin mir nicht sicher. –

+0

können Sie Code hochladen, wie Sie Ihre Seiten laden. thnx –

6

Das Problem mit früheren Lösung ist, dass sie die Steuergröße und da der Browser-Steuerung verändert kann nicht abgeschnitten werden und ist immer auf andere WPF-Elemente, Es kann die anderen Elemente abdecken.

Hier ist meine Lösung:

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

Grüße,

Assaf

+0

Es funktioniert nicht für mich; –

Verwandte Themen