这是我到目前为止的解决方案:
//将Web浏览器的大小设置为与图像大小相同
int宽度,高度;
width = webBrowser1.Document.Images [0] .ClientRectangle.Width;
height = webBrowser1.Document.Images [0] .ClientRectangle.Height;
webBrowser1.Width = width;
webBrowser1.Height = height;
//scroll vertically to that element
webBrowser1.Document.Images[0].OffsetParent.ScrollIntoView(true);
//calculate x, y offset of the element
int x = webBrowser1.Document.Images[s].OffsetRectangle.Left +
webBrowser1.Document.Images[s].OffsetParent.OffsetRectangle.Left +
webBrowser1.Document.Images[s].OffsetParent.OffsetParent.OffsetRectangle.Left+
webBrowser1.Document.Images[s].OffsetParent.OffsetParent.OffsetParent.OffsetRectangle.Left+
webBrowser1.Document.Images[s].OffsetParent.OffsetParent.OffsetParent.OffsetParent.OffsetRectangle.Left;
int y = webBrowser1.Document.GetElementsByTagName("HTML")[0].ScrollTop;
//now scroll to that element
webBrowser1.Document.Window.ScrollTo(x, y);击>
现在这段代码完美无缺..但计算偏移量存在问题。我需要计算元素的offsetparent然后计算offsetparent的offsetparent等。我需要动态地做这个而不是逐个添加..我不知道该怎么做。有任何想法吗?
编辑:
这是我的最后和最终版本,它适用于任何html元素,它将找到我想要的任何元素的绝对位置..
public int getXoffset(HtmlElement el)
{
//get element pos
int xPos = el.OffsetRectangle.Left;
//get the parents pos
HtmlElement tempEl = el.OffsetParent;
while (tempEl != null)
{
xPos += tempEl.OffsetRectangle.Left;
tempEl = tempEl.OffsetParent;
}
return xPos;
}
public int getYoffset(HtmlElement el)
{
//get element pos
int yPos = el.OffsetRectangle.Top;
//get the parents pos
HtmlElement tempEl = el.OffsetParent;
while (tempEl != null)
{
yPos += tempEl.OffsetRectangle.Top;
tempEl = tempEl.OffsetParent;
}
return yPos;
}然后使用以下位置:
//now scroll to that element
webBrowser1.Document.Window.ScrollTo(x, y);完成了!