C# 屏蔽控件单击事件更优的方案
2013-10-29 20:46:32
分类: C#/.net
下面使用线程的方法来屏蔽控件单击事件,这个方法更优一些。双击的时候能迅速响应,但是影响到了单击时的响应。
主要原理也是判断两个点击的差距是不是大于500ms。
要深刻理解这里的工作原理,还是需要多加强对鼠标、键盘及其它高级事件的原理。
- private int mLastTime = 0;
- private Thread mSClickThread;
- public Form1()
- {
- InitializeComponent();
- }
- private void doubleClickHandler()
- {
- MessageBox.Show("我是双击");
- }
- private void simpleClickHandler()
- {
- MessageBox.Show("我是单击");
- }
- private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
- {
- if ((Environment.TickCount - this.mLastTime) < 500)
- {
- Thread dClickThread = new Thread(() =>
- {
- doubleClickHandler();
- }
- );
- dClickThread.IsBackground = true;
- dClickThread.Priority = ThreadPriority.Highest;
- dClickThread.Start();
- this.mSClickThread.Abort();
- }
- else
- {
- this.mSClickThread = new Thread(new ThreadStart(() =>
- {
- Thread.Sleep(300);
- simpleClickHandler();
- })
- );
- this.mSClickThread.IsBackground = true;
- this.mSClickThread.Start();
- }
- }
- private void dataGridView1_MouseUp(object sender, MouseEventArgs e)
- {
- this.mLastTime = Environment.TickCount;
- }