2010-08-09 95 views
2

我在我的C#Win App中使用旧的ActiveX控件。 它有一个MouseUp事件,它的eventArgs传递了我们点击过的点的X和Y,但对于我的场景,我使用它的ItemClick事件,它的eventArgs没有关于X和Y的信息。但我需要知道他们显示我的弹出窗口...所以有办法我可以找出什么是X和Y的用户右键单击的位置,所以我可以将其传递给我的contextMenuStrip.Show方法。获取控制点击点

感谢

+2

这可能有助于参考,以及:http://stackoverflow.com/questions/1316681/getting-mouse-position-in-c – mint 2010-08-09 19:07:08

回答

5

控制类有一个静态只读属性MousePosition,这给屏幕上的鼠标坐标。你可以用它来知道ContextMenu的位置。

从MSDN:

Control.MousePosition属性

类型:System.Drawing.Point

包含 鼠标光标相对于与所述 左上的坐标的Point屏幕的一角。

5

Cursor.Position会给你光标的当前屏幕坐标。对于大多数用途而言,即使鼠标可能会在点击和被调用的处理程序之间移动,这也足够好。

+0

谢谢corvuscorax,你的答案和fletcher的为我工作。我之所以将他标记为“答案”,仅仅是因为它早些发布。 – Bohn 2010-08-09 19:32:50

+0

+1两种解决方案都会返回鼠标的坐标。这是不对的upvote是错的 – fletcher 2010-08-09 19:43:48

4

您需要获取获取屏幕位置的光标位置,然后从控件中调用pointToClient以获取控件的相关点。阿卡。 0,0是控件的左上角。

this.PointToClient(Cursor.Position); 

+1为其他答案带领我在正确的方向。