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

问题描述:

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

例如,说我的控制有500高度的滚动条会导致明显的矩形,有100高度所以,当我部分滚动时,客户端的坐标(从鼠标点击)将相对于一些返回客户矩形(例如50)。

但我想知道的是从我的控制开始的偏移量,所以它会像250

我一直在努力了一段时间摸不着头脑,我想我一定可以忽略一些容易的事情,因为我没有在这个主题上找到很多信息。

谢谢。

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

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