what' s неправильно с этим кодом? Can' t находят правильное местоположение webbrowser элемента

private Point GetElementPosition(IHTMLElement current_element)
    {
        int x_add = current_element.offsetWidth;
        int y_add = current_element.offsetHeight;
        int x = current_element.offsetLeft;
        int y = current_element.offsetTop;
        while ((current_element = current_element.parentElement) !=null)
        {
            x+=current_element.offsetLeft;
            y+= current_element.offsetTop;
        }

        y-=(webBrowser.Location.Y);

        return new Point(x+(x_add/2),y-(y_add/2));
    }

Этот метод, как предполагается, вычисляет абсолютное положение IHTMLElement на экране, принимая во внимание местоположение контроля за webbrowser. Это тогда возвращает переменную Пункта, которая соответствует срединной точке элемента. Что случилось с ним? Это, кажется, предназначается на приблизительно 50-60 пикселей ниже. Править: Я также попробовал то же самое, но HtmlElement вместо IHTMLElement. Ничто различное не вышло из него. Я использовал функцию SetCursorPos, чтобы послать курсор мыши в расчетный результат, но это всегда ниже, чем желаемое местоположение. Что я не принимаю во внимание?

0
nl ja de
У вашего заявления мог бы быть 50-60px главный заголовок, который не рассматривают как часть окна приложения и пропускают, добираясь offsetWidth и offsetHeight. Вам, возможно, придется дать компенсацию за это в этом коде.
добавлено автор Farrukh Subhani, источник
Можете вы подтверждать, комментировать линию и видеть, какие результаты подходят.
добавлено автор Farrukh Subhani, источник
это могло бы быть очевидно для вас, но не здесь. Возможно, отладка со всем появлением ценностей облегчит видеть, какая линия дает неправильные ценности. Кодекс выглядит хорошо мне
добавлено автор Farrukh Subhani, источник
Никакая потребность написать все ценности здесь. Можно просто отладить приложение и видеть, правильны ли фактические погашения, которые вы получаете, или нет. Поместите точку останова somehwhere. Несколько раз не рассматриваемый элемент, но родительский элемент. Отладка поможет видеть, как эта функция должна начаться и закончиться правильными значениями. Вы уже знаете математическое ожидание, поскольку вы установили, что это - 50-60pixel промежуток в вычислении. Его просто отладка, где этот промежуток входит в.
добавлено автор Farrukh Subhani, источник
Я думал y-= (webBrowser. Местоположение. Y) дает компенсацию за это. Применение работает над полным экраном
добавлено автор pzogr, источник
It' s более, чем очевидный, когда вы смотрите на экран, что метод возвращает неправильное вычисление. Различие в оси Y между правильным пунктом и расчетным намного больше, чем различие между вершиной экрана и контролем за webbrowser. Вопрос состоит в том, почему этот код неправильно?
добавлено автор pzogr, источник
Я don' t полагают, что это собирается помогать. Я уже сделал это прежде, чем спросить, но нет никакого смысла (к моему знанию) записи многочисленных ценностей (> 10), чтобы сравнить их с... что? Это могло быть различие между IHTMLElement.offsetTop и HtmlElement. Прямоугольник. X? Я попробую это также...
добавлено автор pzogr, источник
Я уже сделал это, как я сказал вам прежде. Я также создал файл журнала, который содержит всю информацию об элементе, но меня don' t знают, что сделать с этой информацией. У меня нет ничего, чтобы сравнить его с. Я действительно знаю, что у меня есть этот промежуток на 50-60 пикселей, но я don' t знают почему... Я предполагаю, что что-то должно быть вычтено, или что-то должно быть опущено от дополнения - что?
добавлено автор pzogr, источник
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot