2009-10-14 63 views
3

我有一個需要設置特定高度的Web瀏覽器控件。如果用戶有少量文本,我希望Web瀏覽器很短。如果用戶輸入很多文本,那麼我需要Web瀏覽器更高。WebBrowser - 查找渲染文本的高度

如何從WebBrowser中找到渲染文本的高度?

我看到這個Getting the page height from a C# web browser control,但認爲有更好的方法。


更新

我設置瀏覽器的文本用:

webBrowser1.DocumentText = value; 

後,我設置這個值,我可以檢查webBrowser1.Document.Body及其零。我也可以得到文件的所有孩子,但沒有人返回。

我是否設置了正確的屬性?

回答

3

我用webBrowser.DocumentText注意到的一點是,在設置它後,你不一定能「立刻」獲取它的值。

webBrowser1.DocumentText = "Some Text"; 

labelHtml.Text = webBrowser1.DocumentText 

這將不會產生可預測的結果,因爲webbrowser控件可能還沒有完成渲染文本。如果它反覆運行,並且「某些文本」是一個變量,則會看到「labelHtml」很快就會與瀏覽器控件中的內容不同步。 (更復雜「一些文本」是時間越長,自然呈現。)

如果你使用WebBrowser控件的webBrowser1_documentCompleted事件處理程序,以獲取DocumentText,你應該罰款。

private void setText(string htmlText) 
    { 
      webBrowser1.DocumentText = htmlText; 
    } 


    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     label1.Text = webBrowser1.DocumentText; 
    } 

LABEL1現在將包含你提供...

+0

哎呀,在您對Phoexo的回答發表評論後發佈......浪費了我的時間呢? – 2009-10-14 22:23:01

2

的答案對那個問題:

發現身體標記,並得到該元素的OffsetRectangle.Bottom。這會給你頁面的高度。

我看不出有什麼更好的辦法需要,這對我來說似乎相當容易。


webBrowser1.DocumentText是否返回任何內容?您的網站包含正文標記,對嗎?

+0

然後我必須做別的事情錯了...讓我更新我的問題 – Miles 2009-10-14 21:38:25

+0

雅,我設置DocumentText =「一些文字」。在其設置之後,DocumentText只是「」。它喜歡它沒有設置它 – Miles 2009-10-14 21:54:07

+0

找到了答案。我在設置後正在檢查這個值。我查看了文件完成加載並在那裏檢查的事件。繁榮。有。謝謝 – Miles 2009-10-14 22:09:04

0

我明白了一個道理去做另一種方式......

引用的文章「充分利用頁面高度的網頁瀏覽器一個C#web瀏覽器控件「利用了Compact Framework API中不存在的System.Windows.Forms.HtmlElementcollection。我正在尋找在.NET CF中工作的解決方案。出於這個原因,我會對另一個解決方案感興趣。