为了账号安全,请及时绑定邮箱和手机立即绑定

winform按钮button变为灰色后依然可以执行 click

winform按钮button变为灰色后依然可以执行 click

Qyouu 2018-07-28 08:06:46
在winform中的button,点击后先设置enable为false,中间处理其他,最后设置enable为true但是执行过程中再点击button,依然可以执行clickprivate void button1_Click(object sender, EventArgs e){button1.Enabled = false;textBox1.Text += "在执行中········";//process somethingtextBox1.Text += "执行完毕!";button1.Enabled= true;}这问题怎么解决
查看完整描述

2 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

这是因为消息机制引起的问题,如果处理click事件的函数执行时间过长,那么下一次点击的消息会存入消息队列,等到当前click处理函数退出以后,再从消息队列获取此消息执行。你可以使用我提供的代码,多次点击button,你会看到多次的重复执行。

解决此问题的办法是尽可能的让click事件处理函数的执行时间缩短,更严谨的做法是自己设置同步事件,忽略无效的点击。


查看完整回答
反对 回复 2018-07-30
?
GCT1015

TA贡献1827条经验 获得超4个赞

没啥好说的:

把 调用 webservice 改成异步调用

完成后回调 执行

button1.Enabled= true;


查看完整回答
反对 回复 2018-07-30
  • 2 回答
  • 0 关注
  • 923 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信