3

我使用函数 PointToScreen 来获取控件的屏幕相关点,如果我将此函数用于表单顶部的工具条,它会给出正确的值,但如果表单顶部有菜单条,然后在菜单条下,工具条在那里,那么该功能没有为控制工具条提供正确的屏幕点值。

因此,当我将这个功能用于现在表单顶部的工具条时,它会给出正确的位置,就像它给出的 Y 位置为 26 一样,这没关系。

现在我正在添加表单顶部的菜单条,工具条现在位于菜单条下方,现在如果我使用该功能,那么它不会给出正确的值,例如,它给出的 y 位置为 74,应该是(26 + 菜单条的高度) = 50。

4

1 回答 1

4

我会验证您是否调用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).

于 2010-01-09T07:00:20.287 回答