2012-08-14 85 views
0

我正在制作一个具有ListView的窗体。当鼠标悬停在ListView中listView项目之上时,我想显示一个“图片窗口”。我通过使用“ListView”的“ItemMouseHover”事件来实现此目的。我想在靠近鼠标位置处显示此“图片窗口”。但是,我无法从itemmousehover事件中获取鼠标位置。任何人都可以说如何实现这一目标?如何获取鼠标位置并将其用于客户端

注:我使用.NET 4.0

编辑: “Danbystrom” 给了确切的答案。但是我发现其他的根本原因。看到我的答案。

+0

Dup:http://stackoverflow.com/questions/465545/how-to-get-mouse-position-over-a-certain-control – 2012-08-14 08:04:32

+1

@Arsen在这个问题中,他说“DragEventArgs返回X/Y坐标“。就我而言,我没有得到任何事件的坐标。所以,这个问题可以被认为是一个不同的问题。 – prabhakaran 2012-08-14 08:08:32

+0

哎呀,是的,对不起 – 2012-08-14 08:13:52

回答

2

静态方法Control.MousePosition会给你屏幕空间的坐标。然后,您可以使用Control.PointToClient实例方法将其转换为客户端坐标。

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

您的回答缩小了问题范围。我发现在调用show()后,“图片窗口”的位置会自动改变。我正在调查它。 – prabhakaran 2012-08-14 08:53:53

0

新的窗口将被放置在你的意志,只有当你选择“手动”,而不是“WindowsDefaultLocation”在属性“中StartPosition”。否则,“OS”会尝试将新窗口的位置放在鼠标位置附近。如果新窗口将鼠标隐藏在该位置,则会尝试通过附近的点,这会导致闪烁。

+0

这个回答怎么回事“但是,我无法从itemmousehover事件中获得鼠标位置,有人可以说如何实现这个吗?” – 2012-08-14 14:15:56

+0

@danby感谢您的评论。它阻止了我选择错误的答案 – prabhakaran 2012-08-15 07:09:01