.net - 在确定菜单项的放置位置时是否有任何标准可遵循?

标签 .net windows winforms user-interface

在开发基于 Windows 窗体的应用程序时,在设计窗体的主菜单系统时是否应遵循任何标准?

大多数带有菜单系统的 Windows 应用程序都会有您的标准文件 |编辑 |查看 |工具 |帮助菜单。您如何确定任何其他顶级菜单项的位置?

此外,您如何确定子菜单项的位置?例如,您会遵循哪些规则或原则来确定某个项目是否应放置在“编辑”、“工具”或您自己的非标准顶级菜单中?

我在这里寻找两件事:

  1. 详细介绍此内容的已发布资源(网络或打印品)(尤其是来自 Microsoft 的资源)或来自 UX 或 UI 专业人员的其他 Material 。
  2. 您自己的意见。

根据 Gamecat 提到功能区的回复,我会将其扩展到功能区。您如何确定出现在哪些选项卡按钮上?寻找与上述相同的东西。

相关问题: https://stackoverflow.com/questions/126797/is-there-a-style-guide-for-guis-somewhere

最佳答案

Microsoft 的 Vista 用户体验指南位于: http://msdn.microsoft.com/en-us/library/aa511258.aspx

特定于菜单(包括标准菜单)的内容位于: http://msdn.microsoft.com/en-us/library/aa511502.aspx

这包括菜单和菜单项的标准顺序、它们的名称和它们的快捷键。

一些一般准则:

文件用于影响用户正在处理的全部内容(通常是文件)或整个应用程序(例如,退出)的命令。这也是用户选择他们想要处理的表单的好地方。

编辑用于选择内容片段(例如,查找、全选)并对这些片段执行操作(复制、删除)。不要将其用作一般的“更改某些内容”菜单(例如,“编辑”首选项或宏)。

View 会更改内容的外观或表示,但不会更改基础内容本身(例如,用户在您的表单中输入的内容)。考虑在 View 菜单项中包含用于控制工具栏的存在(工具栏不是内容)。这确实应该与选项/首选项一起使用。

虽然它被列为标准,但我会避免使用“工具”菜单。名称没有意义,内容往往是随机垃圾。考虑 Office 功能区使用的名称和组织(例如,选项在相当于文件的位置)。参见 http://blogs.msdn.com/jensenh/archive/2006/01/31/520061.aspx .

通常将特定于应用程序的菜单项放在标准菜单中的标准菜单项下方,这样用户的肌肉内存就不会被标准菜单项打乱。但是,如果特定于应用程序的菜单项是标准菜单项的变体,则将其直接放在标准菜单项下方(例如,查找下一个在查找下或选择性粘贴在粘贴下)

不要害怕为上面不适合的项目创建自己的菜单。菜单栏通常宽度不足,尤其是对于非标准菜单项,会产生较弱的信息气味。八到十个菜单是完全可以接受的。只有三个菜单项的菜单是完全可以接受的;有两个菜单项的一个也不是不可能的。

级联或子菜单很难使用。改为按分隔符对菜单项进行分组。在有必要考虑级联菜单之前,一个菜单可能有大约 15 个项目。如果您有如此多的菜单项,请首先考虑将一些菜单项拆分为单独的菜单,而不是菜单中的级联菜单。

将您的应用程序特定菜单放在菜单栏上的“查看”之后但在“窗口”或“帮助”之前。 我强烈建议用户研究(例如,卡片分类)来组织和命名非标准菜单。

仔细观察功能区,您会发现它的组织方式与菜单栏几乎相同,具有文件( Logo 菜单)、编辑(“主页”选项卡,包括格式)和 View 等同项,因此,从组织的角度来看,使用功能区还是菜单栏没有什么区别。

菜单栏仍然是大多数应用程序的最佳选择。功能区并不意味着点击次数少于传统的菜单栏/工具栏组合。不要因为 MS 的插入就跳到功能区。我在 http://www.zuschlogin.com/?p=36 有详细信息.

关于.net - 在确定菜单项的放置位置时是否有任何标准可遵循?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/268532/

相关文章:

c# - 什么是NullReferenceException,如何解决?

c# - PEVerify 关于重复方法的警告在这里是错误的吗?

.net - .NET中的可为空的整数

c# - 即使 DataGridView 绑定(bind)到列表,也不会显示任何记录

winforms - Xtragrid 存储库组合框

java - .net 3.5 :how to implement calculate crc32 for data using dot net 3. 5 API?

java - 在 Windows-7 64 位上运行 hadoop

c++ - Windows 与 Linux 内存分配/std::list 构造函数性能

windows - 带有 bazel 的 Tensorflow : avx ignored?

c# - 我可以从 C# 应用程序发送 SMS 消息吗?