当前位置:  开发笔记 > 开发工具 > 正文

获取鼠标点击DoubleClick事件的位置/按钮

如何解决《获取鼠标点击DoubleClick事件的位置/按钮》经验,为你挑选了3个好方法。

有没有一种方法可以在控件DoubleClick事件中获取鼠标光标的(x,y)坐标?

据我所知,这个位置必须从全球获得:

Windows.Forms.Cursor.Position.X, Windows.Forms.Cursor.Position.Y

另外,有没有一种方法可以获得哪个按钮产生了双击?



1> 小智..:

使用MouseDoubleClick事件而不是DoubleClick事件.MouseDoubleClick提供MouseEventArgs而不是普通的EventArgs.这适用于"MouseClick"而非"Click"以及所有其他处理鼠标的事件.

MouseDoubleClick确保鼠标确实在那里.DoubleClick可能会引起其他问题,鼠标坐标可能没用 - MSDN:"DoubleClick事件是控件的逻辑上更高级别的事件.它们可能会被其他用户操作引发,例如快捷键组合."



2> Moose..:

注意:正如danbruc所指出的,这对UserControl不起作用,因为e不是MouseEventArgs.另请注意,并非所有控件都会为您提供DoubleClick事件 - 例如,Button会向您发送两个Click事件.

  private void Form1_DoubleClick(object sender, EventArgs e)
   {
       MouseEventArgs me = e as MouseEventArgs;

       MouseButtons buttonPushed = me.Button;
       int xPos = me.X;
       int yPos = me.Y;
   }

获取相对于表单的x,y ..

MouseEventArgs中还有左或右按钮.



3> Daniel Brück..:

Control.MousePosition和Control.MouseButtons是您正在寻找的.使用Control.PointToClient()和Control.PointToScreen()在屏幕和控件相对坐标之间进行转换.

有关详细信息,请参阅MSDN Control.MouseButtons属性,Control.MousePosition属性,Control.PointToClient方法和Control.PointToScreen方法.


UPDATE

不要看树木了......:D看到穆斯的回答并看看事件的论点.

此MSDN文章列出了哪些鼠标操作会根据控件触发哪些事件.

UPDATE

我错过了穆斯的演员,所以这不会奏效.您必须使用Control.DoubleClick()内部的静态Control属性.因为按钮信息被编码为位字段,您必须使用所需的按钮进行如下测试.

(Control.MouseButtons & MouseButtons.Left) == MouseButtons.Left

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有