繁体   English   中英

在长时间运行过程中禁用鼠标点击?

[英]Disable mouse clicks during long-running process?

我有一个问题,当点击一个按钮并且该过程需要一段时间时,用户点击GUI屏幕上的其他位置。 这些按钮点击在调度程序中排队,因此在初始按钮单击后,单击其他位置。 我希望防止这种情况发生,因此其他UI控件在完成处理后不会被点击。

我能想到的唯一解决方案是在处理按钮点击时调用鼠标事件并阻止它们传递给应用程序。 这是最好的方法吗?

对此更简单的解决方案之一是在有长时间运行的任务时弹出一些半透明覆盖(可能包含进度信息)。 这将可靠地禁用整个UI,直到您删除覆盖(这使您不必进行大量更改/绑定IsEnabled属性)。

如果该过程需要一段时间,通常建议在工作线程中而不是在GUI线程中执行此类过程。 因此,在此CodeProject文章中使用BackgroundWorker方法,然后使用与指定按钮关联的命令的CanExecute方法,如下所示:

WPF命令 - 何时命令重新评估其CanExecute方法?
WPF - CanExecute刷新

编辑:

您可以将其他控件的IsEnabled属性绑定到Command的CanExecute方法的结果。

如何在命令canExecute返回false时禁用组合框
如何将ComboBoxItem的IsEnabled属性绑定到Command的CanExecute方法的结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM