下面的动作的情景:
平台:视窗
IDE:微软的Visual Studio 2008
语言:C#
.NET框架:3.5
我的应用程序包含2 buttons
- “加载数据”和“停止加载数据”和multi-line textbox
。点击“加载数据”button
后,一些数据开始在textbox
中加载。为了防止用户多次单击“加载数据”button
,我已经在点击后禁用了button
。当整个数据在textbox
中加载时,“加载数据”button
再次被激活。另一方面,当点击“停止加载数据”button
时,停止加载数据(如果用户希望在加载整个内容之前停止它)。如前所述,为防止用户多次点击“加载数据”button
,我已禁用button
,意图用户只能点击“停止加载数据”button
或等待整个数据为载入textbox
。我实现了这一点。乍一看它似乎运作良好。但在测试过程中,我发现即使“加载数据”button
已禁用,如果用户单击了button
,虽然此时没有任何事情发生,但只要整个数据加载并且button
再次启用,该点击就会生效发现在禁用状态期间被执行。就好像程序正在记录击键和鼠标点击并等待按钮再次变为活动状态。但是我的程序中没有这种按键或鼠标点击记录功能。什么导致了这样的活动?我怎样才能防止这种行为?
谢谢。防止用户点击一个特定的按钮时,正在执行
0
A
回答
3
一种选择是使用重入定点工作:
你可以定义一个int
场(0初始化),并通过Interlocked.Increment
在进入方法更新它,才能继续进行,如果是1,在结束只是做一个Interlocked.Decrement
。
使其可见用户,你可以在开始执行时禁用按钮,并启用它,当执行结束了......
BTW:长时间运行的任务应该异步完成(通过单独的螺纹为例)...
0
如果你把你的电话一个同步,它会锁定整个页面,直到加载完成。
否则你会只是做你已经尝试过的方法,我想看看你的残疾人状态代码,因为东西告诉我你使它看起来被禁用,它仍然是一个功能按钮
0
退房这个帖子:
http://www.codeguru.com/forum/showthread.php?t=480279
我首先想到的是消除事件处理程序,并在单击事件的结束重新绑定它。此线程建议使用BackgroundWorker并将其设置为异步。
0
我敢打赌,你甚至不能移动窗体,直到数据加载,并且你也无法停止加载数据。问题是整个表单冻结,直到加载完成。您必须将加载部件移动到单独的线程中。
0
好了,再另silution:
在负载开始是隐藏load
按钮代替它(说)显示一个进度条。在完成加载或在stop loading
点击使load
按钮再次可见。在这种情况下,您可以避免您抱怨的“连锁点击”管理。
或管理一个按钮。首先是load
,点击后,变成stop load
。考虑到有限的屏幕空间,您会在移动环境中经常发现这样的解决方案。但我认为它也可以应用于桌面,并取得巨大成功。为什么不?
相关问题
- 1. 如果重复点击按钮,防止执行UIButton的IBAction
- 2. VBA点击一个特定的按钮
- 3. 防止onblur代码执行,如果点击提交按钮
- 4. 防止按键点击按钮点击即使在vb6中
- 5. 防止双击一个按钮与knockout.js
- 6. 当用户点击输入按钮时触发一个按钮
- 7. 防止在多用户环境中同时点击相同的按钮
- 8. jQuery防止回发点击按钮
- 9. Android - 防止按钮点击PopupWindow以外
- 10. 防止页面刷新按钮点击
- 11. 执行按钮与点击
- 12. 点击在铁轨一个特定的按钮使用水豚
- 13. 防止用户点击单选按钮尝试完成后
- 14. 定时器不停止按钮点击
- 15. 如何通过点击另一个按钮java执行按钮?
- 16. 防止用户点击
- 17. 当用户点击vb.net中的关闭按钮时执行一行代码
- 18. 当我点击另一个按钮时,无法停止按钮点击事件
- 19. 当用户点击输入时执行操作/按钮
- 20. 当用户双击一个按钮时,防止函数被调用两次?
- 21. 单击一个按钮时禁用多个按钮点击
- 22. 如何防止当我点击一个按钮
- 23. 如何防止多次点击一个锚标签按钮
- 24. 如何在单击按钮时删除一个特定行?
- 25. 防止Silverlight的datagrid选择从点击按钮点击改变?
- 26. 如何防止在Android的正面按钮点击时自动解除Appcompact AlertDialog?
- 27. 停止在winform按钮上执行的功能点击
- 28. 如何在用户点击Like Facebook按钮后执行脚本?
- 29. 在用户控件内执行按钮点击
- 30. 在Android SDK中执行点击按钮
你是否因为不使用后台线程来执行操作而阻止了用户界面? – Matthias 2012-03-14 14:47:50
@ winSharp93:我正在使用后台线程来执行操作。但我仍然遇到了一些问题。感谢Yahia,因为建议的解决方案适合我。 – OutOfBoundsException 2012-03-14 15:08:51