c#屏蔽控件单击事件一种解决方案

    一般控件的双击事件会连带引发单击事件!

    如下方法,即创建一个Timer控件用于监视单击事件。

    一旦单击发生,就自动启动Timer的Tick事件(timer1_Tick(object sender, EventArgs e)),一定时间后,若没有第二次点击发生,则执行单击事件(simpleClickHandler()),若在这段时间有双击事件(dataGridView1_MouseDoubleClick((object sender, MouseEventArgs e))发生,则停止Timer,此时单击事件就不会发生了。。

c#屏蔽控件单击事件一种解决方案

图1

c#屏蔽控件单击事件一种解决方案

图2、


注意,图2Interval 为事件触发的频率为100ms一次!


timer1_Tick()判断是不是双击的主要方法就是两次单击的时间间隔不能超过500ms。

 

  1. private int mClick = 1;
  2. public Form1()
  3. {
  4.     InitializeComponent();
  5. }
  6. private void timer1_Tick(object sender, EventArgs e)
  7. {
  8.     this.mClick += 1;
  9.     if (this.mClick == 5)
  10.     {
  11.         this.simpleClickHandler();
  12.         timer1.Enabled = false;
  13.         this.mClick = 1;
  14.     }
  15. }
  16. private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
  17. {
  18.     if (e.Button == MouseButtons.Left)
  19.         timer1.Enabled = true;
  20. }
  21. private void dataGridView1_MouseDoubleClick(object sender, MouseEventArgs e)
  22. {
  23.     timer1.Enabled = false;
  24.     this.doubleClickHandler();
  25. }
  26. private void doubleClickHandler()
  27. {
  28.     MessageBox.Show("我是双击");
  29. }
  30. private void simpleClickHandler()
  31. {
  32.     MessageBox.Show("我是单击");
  33. }


    以上方法虽然能实现对单击事件的屏幕,但总感觉性能上差了些。而有时连续多次双击,会出现单击与双击错乱的情况。本方法仅作参考,还需要更优的解决方案。

参考博客:

http://www.51res.net/html/2004/0414/32374.html

上一篇:ARM体系结构与编程学习笔记1


下一篇:redhat linux 服务器网卡冗余配置