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

简介:     一般控件的双击事件会连带引发单击事件!     如下方法,即创建一个Timer控件用于监视单击事件。     一旦单击发生,就自动启动Timer的Tick事件(timer1_Tick(object sender, EventArgs e)),一定时间后,若没有第二次点击发生,则执行单击事件(simpleClickHandler()),若在这段时间有双击事件(dataGridView1_MouseDoubleClick((object sender, MouseEventArgs e))发生,则停止Timer,此时单击事件就不会发生了。

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

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

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

image

图1

image

图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

相关文章
|
1月前
|
C#
c# Gridview 点击checkbox 触发的事件
c# Gridview 点击checkbox 触发的事件
|
5天前
|
SQL 存储 C#
C# Web控件与数据感应之 TreeView 类
C# Web控件与数据感应之 TreeView 类
|
5天前
|
SQL 存储 Oracle
C# Web控件与数据感应之 CheckBoxList 类
C# Web控件与数据感应之 CheckBoxList 类
|
5天前
|
SQL 存储 Oracle
C# Web控件与数据感应之 Control 类
C# Web控件与数据感应之 Control 类
|
5天前
|
SQL 存储 Oracle
C# Web控件与数据感应之 ListControl 类
C# Web控件与数据感应之 ListControl 类
|
22天前
|
JavaScript 前端开发 C#
C# webbrowser控件设置代理IP访问网站
C# webbrowser控件设置代理IP访问网站
|
1月前
|
C#
C# Dev解决gridview1_SelectionChanged和gridview1_RowCellClick事件触发两次等问题
C# Dev解决gridview1_SelectionChanged和gridview1_RowCellClick事件触发两次等问题
C# Dev解决gridview1_SelectionChanged和gridview1_RowCellClick事件触发两次等问题
|
1月前
|
C#
C# 禁止ComboBox滚动事件细谈
C# 禁止ComboBox滚动事件细谈
|
2月前
|
C# Windows
49.c#:StatusStrip 控件
49.c#:StatusStrip 控件
30 1
49.c#:StatusStrip 控件
|
2月前
|
C# 开发者 Windows
48.c#:toolstrip控件
48.c#:toolstrip控件
18 1