我正在制作一个具有 ListView 的表单。每当鼠标悬停在 ListView 中的一个 listView 项上方时,我想显示一个“图片窗口”。我通过使用“ListView”的“ItemMouseHover”事件实现了这一点。我想在鼠标位置附近显示这个“图片窗口”。但是,我无法从 itemmousehover 事件中获取鼠标位置。有人可以说如何实现这一目标吗?
注意:我使用的是 .Net 4.0
编辑: “Danbystrom”给出了确切的答案。但我发现根本原因是其他的。请参阅我的答案。
静态方法 Control.MousePosition 将为您提供屏幕空间中的坐标。然后,您可以使用 Control.PointToClient 实例方法将其转换为客户端坐标。
var pt = listView.PointToClient( Control.MousePosition );
仅当您在“StartPosition”属性中选择“手动”而不是“WindowsDefaultLocation”时,新窗口才会按照您的意愿放置。否则“操作系统”会尝试将新窗口的位置放在靠近鼠标位置的某个位置。如果新窗口将鼠标隐藏在该位置,那么它将尝试通过一些附近的点,这将导致闪烁。