我使用函数PointToScreen来获取控件的屏幕相关点,如果我将此函数用于表单顶部的工具条,但是如果在表单顶部有menustrip然后在menustrip,toolstrip就在那里,然后函数没有为控件工具条提供适当的屏幕点值。
所以,当我将这个函数用于现在表格顶部的工具条时,它给出了正确的位置,就像它给出了26的Y位置一样好。
现在我正在添加menustrip顶部的形式,工具条现在在menustrip下,现在如果我使用该函数然后它没有给出正确的值,它给出y位置74,应该是(26 +高度) of menustrip)= 50。
答案 0 :(得分:4)
我会验证您是否在正确的控件上调用了PointToScreen
。如果要在屏幕坐标中找到控件的位置,请在其父控件上调用PointToScreen
。
例如:
control.Parent.PointToScreen(control.Location);
如果使用相对于父控件的点(例如Control.Location)在控件本身上调用PointToScreen
,则会得到错误的位置。
例如:
让我们说control.Location = new Point(0, 20)
。如果父级位于(100, 100)
相对于桌面,则控件的桌面位置为(100, 120)
。如果您在父控件上调用PointToScreen
,那么您将获得(100, 120)
。如果您在控件本身上调用PointToScreen
,您将获得相对于控件的桌面位置的点(0, 20)
的位置,这将最终为{{1 }}