gpt4 book ai didi

c# - 防止表单接收鼠标点击

转载 作者:行者123 更新时间:2023-11-30 19:44:36 27 4
gpt4 key购买 nike

我试图阻止用户在初始点击启动后处理数据时多次点击按钮。

简单地禁用按钮 (buttonBackupNow.Enabled = false;) 没有帮助,因为如果用户多次单击按钮,即使按钮被禁用,表单也会记录点击并重新启动数据与之前的数据处理例程一样处理。

我试着让按钮不可见,结果还是一样。再次尝试禁用表单,结果相同。所以我认为唯一的解决方案是在处理数据时完全忽略点击。

那么,如何阻止表单接收用户鼠标点击?

编辑:这个问题与我在数据处理完成后尝试重新启用按钮有关。

最佳答案

Simply disabling the button (buttonBackupNow.Enabled = false;) doesn't help because if the user click the button multiple times even when the button is disabled, the form registers the clicks and restarts data processing as soon as the previous data processing routine finished.

真的吗?你是如何做到的?我根本无法重现它。禁用按钮会停止触发 Click 事件。

这本身就足够了。 您不必解除事件(以及使用其他技巧)。如果您需要求助于此,则其他地方可能不正确(也许某些代码正在重新启用该按钮?)。

事实上,即使删除处理程序也无法为您解决问题 - 正如您自己在回应 Justin Harvey 的回答时所说 - 让我确信问题出在其他地方。


附言。从用户体验的角度来看,禁用按钮比忽略点击要好得多,因为它给你的用户一些视觉反馈:命令现在不可用。显示一条消息:“不是现在,我已经在做这件事了”也许会更好。但是让按钮可点击而不对点击使用react是不好的。


更新:在 OP 澄清问题后(在评论中)

Well, when the button is pressed, I immediately disable it, then the data processing sequence follows and when it finishes I re-enable the button. But I think that the issue has something to do with the fact that data processing it making the application unresponsive, yet the form still registers the clicks and the button gets pressed again after being re-enabled.

您应该异步运行此操作(在后台线程上)。使用 BackgroundWorker 对象并在其 RunWorkerCompleted 事件中重新启用该按钮。

它解决了问题。

关于c# - 防止表单接收鼠标点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12055174/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com