C# 如何获取鼠标位置并在客户端中使用它

C# 如何获取鼠标位置并在客户端中使用它,c#,.net,winforms,C#,.net,Winforms,我正在制作一个具有ListView的表单。每当鼠标悬停在listView中的某个listView项上时,我想显示一个“图片窗口”。我通过使用“ListView”的“ItemMouseHover”事件实现了这一点。我想在鼠标位置附近显示这个“图片窗口”。但是,我无法从itemmousehover事件中获取鼠标位置。有人能说怎么做到这一点吗 注意:我使用的是.NET4.0 编辑: “丹比斯特伦”给出了确切的答案。但我发现根本原因是其他原因。请参阅我的答案。静态方法Control.MousePosit

我正在制作一个具有ListView的表单。每当鼠标悬停在listView中的某个listView项上时,我想显示一个“图片窗口”。我通过使用“ListView”的“ItemMouseHover”事件实现了这一点。我想在鼠标位置附近显示这个“图片窗口”。但是,我无法从itemmousehover事件中获取鼠标位置。有人能说怎么做到这一点吗

注意:我使用的是.NET4.0

编辑:
“丹比斯特伦”给出了确切的答案。但我发现根本原因是其他原因。请参阅我的答案。

静态方法Control.MousePosition将为您提供屏幕空间中的坐标。然后可以使用Control.PointToClient实例方法将其转换为客户机坐标

var pt = listView.PointToClient( Control.MousePosition );

只有在属性“StartPosition”中选择“Manual”而不是“WindowsDefaultLocation”时,新窗口才会显示在您的遗嘱中。否则“操作系统”将尝试将新窗口的位置放在靠近鼠标位置的某个位置。如果新窗口将鼠标隐藏在该位置,则它将尝试通过附近的一些点,这将导致闪烁。

Dup:@Arsen在该问题中,他说“DragEventArgs返回X/Y坐标”。就我而言,我没有从事件中获得任何坐标。所以,这个问题可以被认为是另一个问题。你的回答缩小了问题的范围。我发现调用show()后,“图片窗口”的位置会自动更改。我正在调查。这是如何回答“但是,我无法从itemmousehover事件中获取鼠标位置。有人能说一下如何实现这一点吗?”@danby感谢您的评论。这使我避免了在答错的地方打勾