鼠标位置如何转换为滚动控件?

时间:2012-04-20 03:32:59

标签: c# .net winforms

我有一个垂直滚动的控件。我需要计算相对于控件顶部的鼠标位置(单击时),而不仅仅是可见区域。

例如,假设我的控件高度为500.滚动条使可见矩形的高度为100.因此,当我部分滚动时,客户端坐标(从鼠标单击)将返回相对于客户端的数字矩形(例如50)。

但我想知道的是从我的控制开始的偏移,所以它将是250。

我已经尝试了一段时间来解决这个问题,我认为我必须忽略一些简单的事情,因为我没有找到关于该主题的更多信息。

感谢。

1 个答案:

答案 0 :(得分:2)

尝试查看PointToClient MethodMousePosition Method,然后尝试使用鼠标的ScreenCoordinates并将其转换为控件的相对坐标。

Point screenPos = new Point(MousePosition.X, MousePosition.Y);
Point myPos = myControl.PointToClient(screenPos);