如何防止连续点击WinFrom的Button

我在点击事件中,对控件的Enabled做了关闭处理,但按钮上多次,连续的点击,还是会重复出发点击事件:


 private void btnScreenshot_Click(object sender, EventArgs e)

this.btnScreenshot.Enabled = false;
...
...
this.btnScreenshot.Enabled = true;

求解,我换成Visible也没有用,多次点击后,按钮消失,处理任务,任务完成,按钮出现,然后继续消失,我这时候已经没有点击了。
但是之前多次点击的效果,还是会一直触发

换成  ((Button)sender).Enabled = false; 也没用。
就算按钮一片灰色,等上个任务完成了,Enabled=true了,就会再次进入点击事件

我做的是隐藏按钮,比如后台在加载数据,显示loading,这时候把btn隐藏,加载100%完毕后再显示,这样客户端想点击也点击不了……

额,不知道你说的是个啥。

你自己写的不就是上个任务完成,让他可以点击么??

至于你说的什么,没有点击了,他还在运行任务,那的看你的代码。线程,异步,延时,订阅----------------cpu要排程的。
如果你说的什么代码中间运行不超过70毫秒,而且是同步的,就没问题

如果你完了啥高级点的啥“线程,异步,分发/订阅”,那就把你那代码发出来,让我们看看,你这个“但是之前多次
小蜜蜂论坛顶帖机点击的效果,还是会一直触发”是个啥意思

this.btnScreenshot.Enabled = true;

没有异步,我的事件是同步的,没有视频,感觉有点难以描述
时间线:
1、UI页面,点击按钮,触发点击事件。
2、点击事件内:按钮灰色。
3、UI页面,点击按钮,灰色,不可点击。
4、点击事件内,执行任务。
5、UI页面,点击按钮,灰色,不可点击(继续点击灰色的那个按钮)*3次
6、点击事件内,执行任务完成,UI按钮恢复可点击。
7、UI界面,按钮自动点击(人工已经不点击了,但是还是自动进入了点击事件)。
8、点击事件内:按钮灰色。
9、点击事件内,执行任务。
10、点击事件内,执行任务完成,UI按钮恢复可点击。
11、点击事件内:按钮灰色。
12、点击事件内,执行任务。
13、点击事件内,执行任务完成,UI按钮恢复可点击。
14、点击事件内:按钮灰色。
15、点击事件内,执行任务。
16、点击事件内,执行任务完成,UI按钮恢复可点击。

大概是这个意思,在按钮已经变成灰色的情况下,第5步,点击事件依然生效了,只是因为是同步操作,所以被挤到后面按顺序执行了。。

Application.DoEvents();
this.btnScreenshot.Enabled = true;
这样就可以

发布了27 篇原创文章 · 获赞 0 · 访问量 1081

猜你喜欢

转载自blog.csdn.net/netyou/article/details/104275011