От: | marttry | ||
Дата: | 19.02.14 19:01 | ||
Оценка: |
HtmlElement newHtmlElement = webBrowser1.Document.GetElementFromPoint(new Point(x,y));
if (newHtmlElement.CanHaveChildren)
{
HtmlElementCollection myCollection = newHtmlElement.Children;
neededElement = getNeededElement(myCollection, x, y); //функция возвращающая более близкий элемент к (x;y)
}
private HtmlElement getNeededElement(HtmlElementCollection myCollection, int x, int y)
{
HtmlElement needed = myCollection[0]; // вот тут ловлю "ArgumentOutOfRangeException"
int x1 = ((IHTMLElement2)myCollection[0].DomElement).clientLeft, y1 = ((IHTMLElement2)myCollection[0].DomElement).clientTop, n = 0;
for (int i = 0; i < myCollection.Count; i++)
{
HtmlElement myElem = myCollection[i];
IHTMLElement2 newElem = (IHTMLElement2)myElem.DomElement;
if (Math.Abs(newElem.clientLeft - x) < x1 || Math.Abs(newElem.clientTop - y) < y1)
{
x1 = newElem.clientLeft; y1 = newElem.clientTop;
if (newElem.canHaveChildren)
{
needed = getNeededElement(myElem.Children, x, y);
}
else
{
needed = myElem;
}
}
}
return needed;
}
Необработанное исключение типа "System.ArgumentOutOfRangeException" в System.Windows.Forms.dll
Дополнительные сведения: Значение '0' недопустимо для 'index'. 'index' должно лежать в диапазоне от 0 до -1.