2009-10-14 37 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中工作的解决方案。出于这个原因,我会对另一个解决方案感兴趣。