在您的应用程序中显示菜单的最佳方法是什么?

时间:2020-12-23 15:54:19

What do you think is the best way to present a hierarchical list of functionality to users within your traditional WinForms application? (A menu system - Assume functionality can be split into a small number of modules and sub-modules but with no fixed depth in terms of those sub-modules).

您认为在传统的WinForms应用程序中向用户提供分层功能列表的最佳方法是什么? (菜单系统 - 假设功能可以分成少量模块和子模块,但这些子模块没有固定的深度)。

Do you like the traditional drop down menu system, ribbons, docked toolbars, a treeview approach or any other innovative ideas?

您喜欢传统的下拉菜单系统,色带,停靠工具栏,树视图方法还是其他任何创新想法?

6 个解决方案

#1


2  

An important thing to consider in your design is Usability vs Discoverability.

您的设计中需要考虑的重要一点是可用性与可发现性。

The best solution depends strongly on who you users are. The UI requirements for a kiosk application for tourists in a city centre are very different to those for a control screen at a power station...

最佳解决方案很大程度上取决于您的用户。市中心游客的自助服务终端应用程序的UI要求与发电站控制屏幕的用户界面要求非常不同......

#2


1  

I often have a toolstrip docked on top for those functions that is most used. And all other as drop down menues with hotkeys set.

我经常有一个工具条停靠在顶部,用于最常用的功能。所有其他的东西都是设置热键的下拉菜单。

If I have a list that can contain different types of items I use a bottom docked toolstrip that change its content depending on the selected item in the list. That way I only have buttons/icons that is relevant for the task and not a bunch of disabled buttons irritating the view.

如果我有一个可以包含不同类型项目的列表,我使用底部停靠工具条,根据列表中的选定项目更改其内容。这样我只有与任务相关的按钮/图标,而不是一堆禁用按钮刺激视图。

I also add a context menu for the items that automagically fills with the same choises as the bottom toolstrip. That way I give a faster way to get to the "action" without having to move the mouse down to the bottom of the screen.

我还为自动填充项目的上下文菜单添加了与底部工具条相同的选项。这样我就可以更快地找到“动作”,而无需将鼠标移动到屏幕底部。

I really hate the ribbon-thing (as a user) so I dont use it as a programmer in my projects.

我真的很讨厌功能区(作为用户)所以我不会在项目中使用它作为程序员。

#3


1  

In my opinion the best way is to make sure everything can be done in several ways.

在我看来,最好的方法是确保一切都可以通过多种方式完成。

  • Menus
  • Keyboard shortcuts
  • Toolboxes ...

So the user can choose it's way around.

因此用户可以选择它的方式。

What I really like to see in more application is that a menu or option is directly attached to the selected item (control) a user is looking at. And of course the menu is in context with the given content.

我真正希望在更多应用程序中看到的是,菜单或选项直接附加到用户正在查看的所选项目(控件)。当然,菜单与给定内容相关。

I have implemented this in my open source project Monex and I really like using it myself. Just look at this screenshot.

我已经在我的开源项目Monex中实现了这一点,我真的很喜欢自己使用它。看看这个截图。

#4


0  

You could always opt for the increasingly ribbon control. Microsoft/Office interfaces have a habit of becoming the user's expectation of norm (eventually).

您可以随时选择越来越多的色带控制。 Microsoft / Office界面习惯成为用户对标准的期望(最终)。

#5


0  

Menubars, toolbars, and Ribbons are used for commands, where the user selection of an item acts on a data object displayed in the window or the application as a whole. Which one you use depends primarily on the number of commands in your app.

菜单栏,工具栏和色带用于命令,其中用户对项目的选择作用于窗口中显示的数据对象或整个应用程序。您使用哪一个主要取决于您的应用程序中的命令数量。

  • Toolbar alone: About 20 or fewer commands. Provide both icons and text labels for each command button. Represent the hierarchy by separators. Have no more than two levels –flatten your hierarchy accordingly.

    仅工具栏:大约20个或更少的命令。为每个命令按钮提供图标和文本标签。用分隔符表示层次结构。不超过两个级别 - 相应地平衡您的层次结构。

  • Menubar with toolbar: Over about 20 but less than about 1000 commands. Up to twenty menu items on a single menu (using separators) is generally better than cascade menus –flatten your hierarchy accordingly. Common commands should have accelerators. Generally limit your toolbar to no more than 30 of the most commonly used commands, primarily commands otherwise only accessible from within a dialog box. Consider not having toolbar controls for menu items that have accelerators –one good means of expert access is often sufficient.

    带有工具栏的菜单栏:超过约20个但少于约1000个命令。单个菜单上最多20个菜单项(使用分隔符)通常比级联菜单更好 - 相应地平整您的层次结构。常用命令应该有加速器。通常将工具栏限制为不超过30个最常用的命令,主要是命令,否则只能从对话框中访问。考虑没有具有加速器的菜单项的工具栏控件 - 一个好的专家访问手段通常就足够了。

  • Ribbon: Over 1000 commands. A Ribbon is little more than putting different menubars-and-toolbars on separate tabs. To work well, the tasks associated with each tab (the top of your function hierarchy) should be non-integrated –users relatively rarely switch from one to the other. The Ribbon is also tends to be more effective for promoting discovery of advanced features at the price of discoverability and efficiency of basic features.

    功能区:超过1000个命令。功能区仅仅是将不同的菜单栏和工具栏放在不同的选项卡上。为了更好地工作,与每个选项卡相关联的任务(功能层次结构的顶部)应该是非集成的 - 用户很少从一个用户切换到另一个用户。功能区也更有效地促进高级功能的发现,代价是可发现性和基本功能的效率。

Check if items in your function hierarchy may be better represented as attributes rather than commands. Commands carry out a process, such as Open, Find, and Copy, while attributes change specific characteristics of something, such as Font, Size, and angle of view. Attributes are set by field controls within your window (e.g., text boxes, check boxes, and dropdown lists) rather than menu items, toolbar controls, or Ribbon controls.

检查函数层次结构中的项目是否可以更好地表示为属性而不是命令。命令执行一个过程,如打开,查找和复制,而属性更改某些内容的特定特征,如字体,大小和视角。属性由窗口中的字段控件(例如,文本框,复选框和下拉列表)设置,而不是菜单项,工具栏控件或功能区控件。

A window-full of such field controls (or other representations of data objects) is a content block. Tree controls may be used to control what content block is shown. Like tab controls, they are preferred over multiple windows when the user frequently switches among the content blocks and does not compare content blocks. Trees are preferred over tab controls when the amount of content will not fit in a single row of tabs.

充满这种字段控件(或数据对象的其他表示)的窗口是内容块。树控件可用于控制显示的内容块。与选项卡控件一样,当用户经常在内容块之间切换并且不比较内容块时,它们优先于多个窗口。当内容量不适合单行选项卡时,树优先于选项卡控件。

Do not have any empty nodes in your tree. Anything the user clicks on should display a full pane of content –flatten your hierarchy accordingly, even going to the extreme of using a list box rather than a tree.

树中没有任何空节点。用户点击的任何内容都应显示完整的内容窗格 - 相应地平展您的层次结构,甚至可以使用列表框而不是树。

If users tend to select one content block, complete a task there, then leave your app, then consider a “home” page displaying a full-page menu of all the content blocks, possibly spatially arrange according to your hierarchy, each accessible with a single click.

如果用户倾向于选择一个内容块,在那里完成任务,然后离开您的应用程序,然后考虑显示所有内容块的整页菜单的“主页”页面,可能根据您的层次结构进行空间排列,每个都可以通过单击。

#6


0  

In my opinion there is no definite answer to your question. It always depends on the menu you are presenting to the user and the users that are expected to use the application

在我看来,你的问题没有明确的答案。它总是取决于您向用户呈现的菜单以及预期使用该应用程序的用户

A menu with standard/common functionalities is probably best presented Office style meaning drop down menus or the new Ribbon style. A menu with custom functionality and, as you state multiple modules and submodules with different depths, is often best presented as a TreeView-like menu.

具有标准/通用功能的菜单最好呈现为Office样式,即下拉菜单或新的Ribbon样式。具有自定义功能的菜单,当您声明具有不同深度的多个模块和子模块时,通常最好呈现为类似TreeView的菜单。

Looking from the point of the user, a typical user will do just fine with a standard menu whereas a more advanced user won't mind more advanced features like keyboard navigation or possibility to hide/show the menu or dock it to the other side of the window.

从用户的角度来看,典型的用户可以使用标准菜单做得很好,而更高级的用户不会介意更高级的功能,如键盘导航或隐藏/显示菜单或将其停靠在另一侧的可能性。窗户。

#1


2  

An important thing to consider in your design is Usability vs Discoverability.

您的设计中需要考虑的重要一点是可用性与可发现性。

The best solution depends strongly on who you users are. The UI requirements for a kiosk application for tourists in a city centre are very different to those for a control screen at a power station...

最佳解决方案很大程度上取决于您的用户。市中心游客的自助服务终端应用程序的UI要求与发电站控制屏幕的用户界面要求非常不同......

#2


1  

I often have a toolstrip docked on top for those functions that is most used. And all other as drop down menues with hotkeys set.

我经常有一个工具条停靠在顶部,用于最常用的功能。所有其他的东西都是设置热键的下拉菜单。

If I have a list that can contain different types of items I use a bottom docked toolstrip that change its content depending on the selected item in the list. That way I only have buttons/icons that is relevant for the task and not a bunch of disabled buttons irritating the view.

如果我有一个可以包含不同类型项目的列表,我使用底部停靠工具条,根据列表中的选定项目更改其内容。这样我只有与任务相关的按钮/图标,而不是一堆禁用按钮刺激视图。

I also add a context menu for the items that automagically fills with the same choises as the bottom toolstrip. That way I give a faster way to get to the "action" without having to move the mouse down to the bottom of the screen.

我还为自动填充项目的上下文菜单添加了与底部工具条相同的选项。这样我就可以更快地找到“动作”,而无需将鼠标移动到屏幕底部。

I really hate the ribbon-thing (as a user) so I dont use it as a programmer in my projects.

我真的很讨厌功能区(作为用户)所以我不会在项目中使用它作为程序员。

#3


1  

In my opinion the best way is to make sure everything can be done in several ways.

在我看来,最好的方法是确保一切都可以通过多种方式完成。

  • Menus
  • Keyboard shortcuts
  • Toolboxes ...

So the user can choose it's way around.

因此用户可以选择它的方式。

What I really like to see in more application is that a menu or option is directly attached to the selected item (control) a user is looking at. And of course the menu is in context with the given content.

我真正希望在更多应用程序中看到的是,菜单或选项直接附加到用户正在查看的所选项目(控件)。当然,菜单与给定内容相关。

I have implemented this in my open source project Monex and I really like using it myself. Just look at this screenshot.

我已经在我的开源项目Monex中实现了这一点,我真的很喜欢自己使用它。看看这个截图。

#4


0  

You could always opt for the increasingly ribbon control. Microsoft/Office interfaces have a habit of becoming the user's expectation of norm (eventually).

您可以随时选择越来越多的色带控制。 Microsoft / Office界面习惯成为用户对标准的期望(最终)。

#5


0  

Menubars, toolbars, and Ribbons are used for commands, where the user selection of an item acts on a data object displayed in the window or the application as a whole. Which one you use depends primarily on the number of commands in your app.

菜单栏,工具栏和色带用于命令,其中用户对项目的选择作用于窗口中显示的数据对象或整个应用程序。您使用哪一个主要取决于您的应用程序中的命令数量。

  • Toolbar alone: About 20 or fewer commands. Provide both icons and text labels for each command button. Represent the hierarchy by separators. Have no more than two levels –flatten your hierarchy accordingly.

    仅工具栏:大约20个或更少的命令。为每个命令按钮提供图标和文本标签。用分隔符表示层次结构。不超过两个级别 - 相应地平衡您的层次结构。

  • Menubar with toolbar: Over about 20 but less than about 1000 commands. Up to twenty menu items on a single menu (using separators) is generally better than cascade menus –flatten your hierarchy accordingly. Common commands should have accelerators. Generally limit your toolbar to no more than 30 of the most commonly used commands, primarily commands otherwise only accessible from within a dialog box. Consider not having toolbar controls for menu items that have accelerators –one good means of expert access is often sufficient.

    带有工具栏的菜单栏:超过约20个但少于约1000个命令。单个菜单上最多20个菜单项(使用分隔符)通常比级联菜单更好 - 相应地平整您的层次结构。常用命令应该有加速器。通常将工具栏限制为不超过30个最常用的命令,主要是命令,否则只能从对话框中访问。考虑没有具有加速器的菜单项的工具栏控件 - 一个好的专家访问手段通常就足够了。

  • Ribbon: Over 1000 commands. A Ribbon is little more than putting different menubars-and-toolbars on separate tabs. To work well, the tasks associated with each tab (the top of your function hierarchy) should be non-integrated –users relatively rarely switch from one to the other. The Ribbon is also tends to be more effective for promoting discovery of advanced features at the price of discoverability and efficiency of basic features.

    功能区:超过1000个命令。功能区仅仅是将不同的菜单栏和工具栏放在不同的选项卡上。为了更好地工作,与每个选项卡相关联的任务(功能层次结构的顶部)应该是非集成的 - 用户很少从一个用户切换到另一个用户。功能区也更有效地促进高级功能的发现,代价是可发现性和基本功能的效率。

Check if items in your function hierarchy may be better represented as attributes rather than commands. Commands carry out a process, such as Open, Find, and Copy, while attributes change specific characteristics of something, such as Font, Size, and angle of view. Attributes are set by field controls within your window (e.g., text boxes, check boxes, and dropdown lists) rather than menu items, toolbar controls, or Ribbon controls.

检查函数层次结构中的项目是否可以更好地表示为属性而不是命令。命令执行一个过程,如打开,查找和复制,而属性更改某些内容的特定特征,如字体,大小和视角。属性由窗口中的字段控件(例如,文本框,复选框和下拉列表)设置,而不是菜单项,工具栏控件或功能区控件。

A window-full of such field controls (or other representations of data objects) is a content block. Tree controls may be used to control what content block is shown. Like tab controls, they are preferred over multiple windows when the user frequently switches among the content blocks and does not compare content blocks. Trees are preferred over tab controls when the amount of content will not fit in a single row of tabs.

充满这种字段控件(或数据对象的其他表示)的窗口是内容块。树控件可用于控制显示的内容块。与选项卡控件一样,当用户经常在内容块之间切换并且不比较内容块时,它们优先于多个窗口。当内容量不适合单行选项卡时,树优先于选项卡控件。

Do not have any empty nodes in your tree. Anything the user clicks on should display a full pane of content –flatten your hierarchy accordingly, even going to the extreme of using a list box rather than a tree.

树中没有任何空节点。用户点击的任何内容都应显示完整的内容窗格 - 相应地平展您的层次结构,甚至可以使用列表框而不是树。

If users tend to select one content block, complete a task there, then leave your app, then consider a “home” page displaying a full-page menu of all the content blocks, possibly spatially arrange according to your hierarchy, each accessible with a single click.

如果用户倾向于选择一个内容块,在那里完成任务,然后离开您的应用程序,然后考虑显示所有内容块的整页菜单的“主页”页面,可能根据您的层次结构进行空间排列,每个都可以通过单击。

#6


0  

In my opinion there is no definite answer to your question. It always depends on the menu you are presenting to the user and the users that are expected to use the application

在我看来,你的问题没有明确的答案。它总是取决于您向用户呈现的菜单以及预期使用该应用程序的用户

A menu with standard/common functionalities is probably best presented Office style meaning drop down menus or the new Ribbon style. A menu with custom functionality and, as you state multiple modules and submodules with different depths, is often best presented as a TreeView-like menu.

具有标准/通用功能的菜单最好呈现为Office样式,即下拉菜单或新的Ribbon样式。具有自定义功能的菜单,当您声明具有不同深度的多个模块和子模块时,通常最好呈现为类似TreeView的菜单。

Looking from the point of the user, a typical user will do just fine with a standard menu whereas a more advanced user won't mind more advanced features like keyboard navigation or possibility to hide/show the menu or dock it to the other side of the window.

从用户的角度来看,典型的用户可以使用标准菜单做得很好,而更高级的用户不会介意更高级的功能,如键盘导航或隐藏/显示菜单或将其停靠在另一侧的可能性。窗户。