从WinForms WebBrowser控件获取页面高度

时间:2009-04-24 13:01:59

标签: c# webbrowser-control

过去几天我一直在努力从WebBrowser控件的Document属性中获取网页的高度。

这是我最近的尝试。

HtmlElementCollection children = webBrowser.Document.All;
int maxOffset = 0;


foreach (HtmlElement child in children) {
    int bottom = 0;
    bottom = child.OffsetRectangle.Bottom;
    if (bottom > maxOffset) {
        maxOffset = bottom;
        pageHeight = maxOffset;
    }
}

我试图通过查找页面中最低元素的偏移底部来计算出页面的最大高度。

问题在于,在大多数情况下拍摄页面的实际长度大约为500px。

有人有任何想法吗?我无法相信获得页面高度有多难!

3 个答案:

答案 0 :(得分:16)

这对我有用:

webBrowser.Document.Body.ScrollRectangle.Height

答案 1 :(得分:1)

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

答案 2 :(得分:0)

webBrowser.Document.Body.ScrollRectangle.Height 给了我一个截断的页面。知道为什么。

我就是这样做的。

循环元素选择最大高度/宽度。我在 documentCompleted 事件之后使用了这个

    //fit to content  -get size **after documentCompleted**
    var wbAll = webBrowser.Document.All.Cast<HtmlElement>();
    var maxWidth = wbAll.Max(x => Math.Max(x.ClientRectangle.Width, x.ScrollRectangle.Width));
    var maxHeight =wbAll.Max(x => Math.Max(x.ClientRectangle.Height, x.ScrollRectangle.Height));

    webBrowser.Height = maxHeight;
    webBrowser.Width = maxWidth;