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

The*_*ean 5 .net c# winforms

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

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

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

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

谢谢。

Mar*_*all 1

尝试查看PointToClient 方法MousePosition 方法,并尝试获取鼠标的屏幕坐标并将其转换为控件的相对坐标。

Point screenPos = new Point(MousePosition.X, MousePosition.Y);
Point myPos = myControl.PointToClient(screenPos);
Run Code Online (Sandbox Code Playgroud)