C# 屏蔽控件单击事件更优的方案

来源:互联网 发布:java对象数组转json 编辑:程序博客网 时间:2024/05/21 19:25
C# 屏蔽控件单击事件更优的方案 2013-10-29 20:46:32

分类: C#/.net

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

    主要原理也是判断两个点击的差距是不是大于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.       }
0 0
原创粉丝点击