计算不同的结果-Method PointToScreen获取桌面(屏幕)控件的相关点

时间:2010-01-09 06:24:13

标签: c# .net winforms

我使用函数PointToScreen来获取控件的屏幕相关点,如果我将此函数用于表单顶部的工具条,但是如果在表单顶部有menustrip然后在menustrip,toolstrip就在那里,然后函数没有为控件工具条提供适当的屏幕点值。

所以,当我将这个函数用于现在表格顶部的工具条时,它给出了正确的位置,就像它给出了26的Y位置一样好。

现在我正在添加menustrip顶部的形式,工具条现在在menustrip下,现在如果我使用该函数然后它没有给出正确的值,它给出y位置74,应该是(26 +高度) of menustrip)= 50。

1 个答案:

答案 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 }}