Pre .net我正在使用MFC,ON_UPDATE_COMMAND_UI和CCmdUI类来更新我的Windows UI的状态.从较旧的MFC/Win32参考:
通常,菜单项和工具栏按钮具有多个状态.例如,如果菜单项在当前上下文中不可用,则该菜单项变灰(变暗).菜单项也可以选中或取消选中.如果不可用,也可以禁用工具栏按钮,或者可以检查它.
当程序条件发生变化时,谁更新这些项目的状态?逻辑上,如果菜单项生成由文档处理的命令,则使文档更新菜单项是有意义的.该文档可能包含更新所基于的信息.
如果命令具有多个用户界面对象(可能是菜单项和工具栏按钮),则两者都被路由到相同的处理函数.这将在一个位置封装所有等效用户界面对象的用户界面更新代码.
该框架为自动更新用户界面对象提供了方便的界面.您可以选择以其他方式进行更新,但提供的界面高效且易于使用.
.net Windows Forms的指导是什么?我在主窗体中使用Application.Idle处理程序,但我不确定这是执行此操作的最佳方法.大约在我将所有UI更新放入Idle事件处理程序的时候,我的应用程序开始显示一些性能问题,而我还没有指标来跟踪它.不确定它是否相关.
我发现最简单的方法是让菜单项事件处理程序生成一个后台线程,该线程禁用菜单项,完成工作,然后重新启用菜单项。这样,UI 可用于处理其他 UI 请求,并且我不需要轮询操作何时完成。
我通常包含阻止多个使用相同资源的操作同时发生的逻辑。这意味着创建一个函数来立即禁用/启用所有类似的资源。例如,我可能一次只允许发生 1 个文件操作,因此我将创建一个函数来禁用/启用与文件操作关联的所有菜单项,并从每个菜单项中调用它。
归档时间: |
|
查看次数: |
4241 次 |
最近记录: |