直接用窗体的click和doubleclick事件相应函数是没办法区分的,因为click在doubleclick前面被触发。

办法一:

在mousedown事件中处理,通过timer计算两次单击时间差。

   private bool isFirstClick = true;private bool isDoubleClick = false;private int milliseconds = 0;private Rectangle hitTestRectangle = new Rectangle();private Rectangle doubleClickRectangle = new Rectangle();
// Detect a valid single click or double click.private void Form1_MouseDown(object sender, MouseEventArgs e){// Verify that the mouse click is in the main hit// test rectangle.//if (!hitTestRectangle.Contains(e.Location)){// return;}// This is the first mouse click.if (isFirstClick){isFirstClick = false;// Determine the location and size of the double click // rectangle area to draw around the cursor point.doubleClickRectangle = new Rectangle(e.X - (SystemInformation.DoubleClickSize.Width / 2),e.Y - (SystemInformation.DoubleClickSize.Height / 2),SystemInformation.DoubleClickSize.Width,SystemInformation.DoubleClickSize.Height);Invalidate();// Start the double click timer.timer1.Start();}// This is the second mouse click.else{// Verify that the mouse click is within the double click// rectangle and is within the system-defined double // click period.if (doubleClickRectangle.Contains(e.Location) &&milliseconds < SystemInformation.DoubleClickTime){isDoubleClick = true;}}}

timer相应函数:

       private void timer1_Tick(object sender, EventArgs e) //计算间隔时间{milliseconds += 100;           // The timer has reached the double click time limit.if (milliseconds >= SystemInformation.DoubleClickTime){timer1.Stop();if (isDoubleClick){//textBox1.AppendText("Perform double click action");//textBox1.AppendText(Environment.NewLine);MessageBox.Show("double click action ", "message:", MessageBoxButtons.OK);}else{//textBox1.AppendText("Perform single click action");//textBox1.AppendText(Environment.NewLine);MessageBox.Show( "single click action ", "message:",MessageBoxButtons.OK);}// Allow the MouseDown event handler to process clicks again.isFirstClick = true;isDoubleClick = false;milliseconds = 0;}}

参考:http://msdn.microsoft.com/zh-cn/library/ms171543%28VS.80%29.aspx



C#窗体鼠标事件区分单击双击相关推荐

  1. java鼠标事件,单击左键画圆,右键画矩形,双击左键清除

    java鼠标点击事件举例 题目描述 一.基本思路 二.引用的类分析 三.代码实现 题目描述 编写Java程序,创建一个窗体,并实现交互.在窗体内"单击鼠标左键",在光标处绘制一个& ...

  2. 老土但有效的刷百度空间人气不被封的方法(C#实现操纵鼠标事件,单击、移动、滚轮)...

    今天在网上看到有人问C#如何实现鼠标左键自动点击并自己设定点击间隔,我也感到很好奇,查了一下发现很简单,只需利用WIN32 API的两个函数SetCursorPos和mouse_event操作鼠标: ...

  3. js区分单击双击,双击不会触发单击事件

    如果一个按钮,单击触发的事件跟双击触发的是不同的业务,那么这里介绍的就是如何处理双击的过程中不触发单击事件的方法 <html><meta charset="UTF-8&qu ...

  4. 鼠标左键单击双击冲突的一种解决方法

    鼠标在得到左键双击事件时,同时也得到了左键down的消息.在只想处理双击事件而不处理按下事件,有下面的方法. 思路: 在收到单击事件后,不处理单击事件,而是settimer,将单击事件对应的操作放到t ...

  5. JavaScript鼠标事件、键盘事件

    常用的键盘事件 keyup 按键弹起的时候触发 // 1.onkeyup document.onkeyup = function(){console.log("弹起"); } // ...

  6. selenium鼠标事件

    鼠标事件 对于鼠标事件,相信大家都不陌生.鼠标事件分很多种,其中有之前提到的单击,因为单击事件比较重要作者就早点介绍了.鼠标事件包含单击.双击.拖动右击等.最常用的就是单击.但是Selenium是比较 ...

  7. 鼠标事件类型:click和dblclick事件共存依赖问题

    当我们给DOM元素,既绑定click事件,又绑定dblclick事件,那么双击鼠标时,会先触发两次click之后再触发dbclick事件,那么如何实现DOM元素的click事件和dblclick事件分 ...

  8. setMouseTracking(true)无法跟踪鼠标事件

    问题环境: 在使用QWidget创建无边框窗体WidgetA时,要实现窗体可改变大小,在边框处要相应的改变鼠标样式,如:Qt::SizeBDiagCursor等,因此需要对窗体鼠标事件进行监控. 问题 ...

  9. Qt中鼠标的双击事件和单击事件的实现方式

    背景 同一个部件既要响应鼠标单击事件又要响应双击事件,而且两者响应的动作没有交集,跟不存在包含关系(如果双击事件动作包含单击事件的动作,那么只需要将双击事件特有的部分放到mouseDoubleClic ...

最新文章

  1. UNITY优化资料收集
  2. DRUID连接池的实用 配置详解
  3. 20170822 前端开发日报
  4. Object o = new Object()在内存中占几个字节
  5. stringredistemplate设置过期时间_Redis的过期删除策略和内存淘汰机制
  6. jzoj6275-[NOIP提高组模拟1]小L的数列【矩阵乘法,欧拉定理】
  7. 跳转指令微型计算机,哪种类型的汇编程序跳转指令最有用?
  8. 在python中要表示一个空的代码块可以使用空语句什么_Python条件判断语句if
  9. bzoj2426 [HAOI2010]工厂选址 读题+贪心
  10. 电子病历基本架构与数据标准
  11. DOM JS实现动态表格
  12. nginx下目录浏览及其验证功能、版本隐藏等配置记录
  13. BZOJ 1734: [Usaco2005 feb]Aggressive cows 愤怒的牛( 二分答案 )
  14. 世界各国国家或地区的国际区号
  15. maya如何查看资源大纲_干货|Maya入门到精通完全自学教程大纲(建模篇)
  16. 用python 开发FreeCad 入门
  17. 微机原理笔记day01 计算机发展史,和计算机组成部分
  18. 常说的七侠五义到底是什么?
  19. 算法实践:波兰表达式
  20. OpenCV开发笔记(六十一):红胖子8分钟带你深入了解Shi-Tomasi角点检测(图文并茂+浅显易懂+程序源码)

热门文章

  1. failure:Build failed with an exception.
  2. python 爬虫生成csv文件和图_csv文件操作和爬虫抓取豆瓣影评并生成词云图
  3. 【结构思考力】01——何为结构思考力?
  4. 数论笔记 · 佩尔方程(连分数)
  5. 那款导航仪好品牌导航仪推荐
  6. Oracle调用存储过程添加数据记录(包括唯一性判断)
  7. [zt]拿两千块钱的薪水要有一万块的范儿--六六
  8. 手机垃圾短信,应该如何有效治理
  9. Windows2016 证书吊销
  10. win11可以安装windows server2016吗