Вычисляет другой результат -Метод PointToScreen для получения рабочего стола (экрана) связанной точки элемента управления - PullRequest
3 голосов
/ 09 января 2010

Я использую функцию PointToScreen, чтобы получить связанную с экраном точку элемента управления, она дает правильное значение, если я использую эту функцию для панели инструментов, которая находится сверху в форме, но если в верхней части формы есть меню, а затем под Если есть меню, полоса инструментов, тогда функция не дает правильное значение точки экрана для панели инструментов управления.

Итак, когда я использую эту функцию для панели инструментов, которая сейчас находится наверху формы, она дает правильное расположение, как если бы она дала позицию Y, равную 26, что нормально.

Теперь я добавляю верхнюю часть меню в форме, и инструментальная полоска теперь находится под менструальной строкой, и теперь, если я использую функцию, то она не дает правильного значения, как, например, она дает позицию 74, которая должна быть (26 + высота Menustrip) = 50.

1 Ответ

4 голосов
/ 09 января 2010

Я бы подтвердил, что вы звоните PointToScreen на правильном контроле. Если вы хотите найти местоположение элемента управления в экранных координатах, вызовите PointToScreen на его родительском элементе управления.

Например:

control.Parent.PointToScreen(control.Location);

Если вы вызовете PointToScreen на самом элементе управления, используя точку относительно родительского элемента управления (например, Control.Location), вы получите неправильное местоположение.

Например:

Позволяет сказать control.Location = new Point(0, 20). Если родительский элемент расположен на (100, 100) относительно рабочего стола, то положение элемента управления на рабочем столе равно (100, 120). Если вы позвоните PointToScreen на родительский элемент управления, вы получите (100, 120). Если вы позвоните PointToScreen на сам элемент управления, вы получите местоположение точки (0, 20) относительно местоположения рабочего стола элемента управления , которое в конечном итоге будет (100, 140).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...