【发布时间】:2010-03-09 08:28:59
【问题描述】:
在 .net 之前,我使用 MFC、ON_UPDATE_COMMAND_UI 和 CCmdUI 类来更新我的 Windows UI 的状态。 来自较旧的 MFC/Win32 参考:
通常,菜单项和工具栏按钮有多个状态。为了 例如,菜单项是灰色的 (变暗)如果它在 现在的上下文。菜单项也可以 被选中或不选中。工具栏 按钮也可以禁用,如果 不可用,或者可以检查。
谁更新这些项目的状态 随着程序条件的变化? 从逻辑上讲,如果一个菜单项生成一个 例如,由 a 处理的命令 文档,拥有 文档更新菜单项。这 文件可能包含 更新的信息 基于。
如果一个命令有多个 用户界面对象(可能是菜单 项目和工具栏按钮),两者都是 路由到相同的处理函数。 这封装了您的用户界面 更新所有等效的代码 单个用户界面对象 地点。
该框架提供了一个方便的 自动更新界面 用户界面对象。您可以选择 以其他方式进行更新, 但提供的界面是 高效且易于使用。
.net Windows 窗体的指南是什么?我在主窗体中使用 Application.Idle 处理程序,但不确定这是执行此操作的最佳方法。大约在我将所有 UI 更新放在 Idle 事件处理程序中时,我的应用程序开始出现一些性能问题,而且我还没有指标来追踪这个问题。不确定是否相关。
【问题讨论】:
-
你到底想做什么?您是否尝试禁用 WinForms 应用程序上的控件?
-
禁用/启用工具栏按钮、菜单项等。检查/取消选中工具栏上检查按钮的状态,显示检查状态的菜单项。之类的东西。非常常规的东西。
-
是的,Application.Idle。当应用程序空闲时,你怎么会遇到性能问题是神秘的。