Chinaunix首页 | 论坛 | 博客
  • 博客访问: 13030011
  • 博文数量: 1293
  • 博客积分: 13501
  • 博客等级: 上将
  • 技术积分: 17974
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 18:11
文章分类

全部博文(1293)

文章存档

2019年(1)

2018年(1)

2016年(118)

2015年(257)

2014年(128)

2013年(222)

2012年(229)

2011年(337)

分类: C#/.net

2013-10-29 20:46:32

    下面使用线程的方法来屏蔽控件单击事件,这个方法更优一些。双击的时候能迅速响应,但是影响到了单击时的响应。

    主要原理也是判断两个点击的差距是不是大于500ms。

     要深刻理解这里的工作原理,还是需要多加强对鼠标、键盘及其它高级事件的原理。

  1. private int mLastTime = 0;
  2.       private Thread mSClickThread;
  3.       public Form1()
  4.       {
  5.           InitializeComponent();
  6.       }
  7.       private void doubleClickHandler()
  8.       {
  9.           MessageBox.Show("我是双击");
  10.       }
  11.       private void simpleClickHandler()
  12.       {
  13.           MessageBox.Show("我是单击");
  14.       }
  15.       private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
  16.       {
  17.           if ((Environment.TickCount - this.mLastTime) < 500)
  18.           {
  19.               Thread dClickThread = new Thread(() =>
  20.               {
  21.                   doubleClickHandler();
  22.               }
  23.                   );
  24.               dClickThread.IsBackground = true;
  25.               dClickThread.Priority = ThreadPriority.Highest;
  26.               dClickThread.Start();
  27.               this.mSClickThread.Abort();
  28.           }
  29.           else
  30.           {
  31.               this.mSClickThread = new Thread(new ThreadStart(() =>
  32.               {
  33.                   Thread.Sleep(300);
  34.                   simpleClickHandler();
  35.                 })
  36.                );
  37.               this.mSClickThread.IsBackground = true;
  38.               this.mSClickThread.Start();
  39.           }
  40.       }
  41.       private void dataGridView1_MouseUp(object sender, MouseEventArgs e)
  42.       {
  43.           this.mLastTime = Environment.TickCount;
  44.       }

参考源工程代码:
WindowsFormsApplication13.rar


阅读(4318) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~