C#在Panel中移动鼠标光标定位错误,如何获取Panel正确位置?
问题根源
Cursor.Position使用的是屏幕绝对坐标系,原点在屏幕左上角,而你当前代码中用到的attach坐标是Panel控件的客户端相对坐标系,原点在Panel自身的左上角,两个坐标系不匹配就会出现定位偏移。- 额外说明:你代码里的
this.Cursor = new Cursor(Cursor.Handle);属于冗余代码,修改光标位置不需要重新初始化Cursor对象,可以直接删除。
解决方法
调用Panel控件自带的PointToScreen方法,把你要定位的Panel内部相对坐标转换成屏幕绝对坐标,再赋值给Cursor.Position即可,示例代码如下:
// 替换为你自己的Panel控件名,attach是你要定位的Panel内部相对坐标 Point screenPosition = 你的Panel控件名.PointToScreen(new Point(attach.X, attach.Y)); Cursor.Position = screenPosition;
内容的提问来源于stack exchange,提问作者arty
相关产品推荐
相关产品推荐

