WebBrowser - 查找渲染文本的高度

时间:2009-10-14 21:10:27

标签: c# .net browser

我有一个需要设置特定高度的网络浏览器控件。如果用户有少量文本,我希望Web浏览器很短。如果用户输入了很多文本,那么我需要网页浏览器更高。

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

我看到了Getting the page height from a C# web browser control,但认为有更好的方法。


更新

我正在设置浏览器的文本:

webBrowser1.DocumentText = value;

设置此值后,我可以检查webBrowser1.Document.Body及其null。我也可以得到文件的所有孩子,但没有人返回。

我是否设置了正确的属性?

3 个答案:

答案 0 :(得分:3)

我在webBrowser.DocumentText中注意到的一点是,在设置之后你不一定能“立即”获得它的价值。

webBrowser1.DocumentText = "Some Text";

labelHtml.Text = webBrowser1.DocumentText

这不会产生可预测的结果,因为webbrowser控件可能尚未完成渲染文本。如果它反复运行,并且“Some Text”是一个变量,您将看到“labelHtml”很快就会与浏览器控件中的内容不同步。 (更复杂的“Some Text”是自然渲染所需的时间越长。)

如果您使用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现在将包含您为Web浏览器提供的内容...

答案 1 :(得分:2)

作为该问题的答案:

  

找到BODY标记并获取该元素的OffsetRectangle.Bottom。这将为您提供页面的高度。

我认为不需要更好的方式,对我来说似乎相当容易。


webBrowser1.DocumentText会返回任何内容吗?您的网站包含正文标记,对吗?

答案 2 :(得分:0)

我认为有理由以另一种方式做到这一点......

引用的文章“从C#Web浏览器控件获取页面高度”使用了紧凑框架API中不存在的System.Windows.Forms.HtmlElementcollection。我正在寻找在.NET CF中工作的解决方案。出于这个原因,我会对另一种解决方案感兴趣。

相关问题