【发布时间】:2012-04-15 16:02:57
【问题描述】:
我在我的程序中使用 ContextMenuStrip,显然,除非我按 Alt,否则它不会显示它的快捷键(助记符,那些应该在 & 前面的字母下显示为下划线的快捷键),但是当我按 Alt 时,显示ContextMenuStrip 将隐藏,因为表单的主菜单将获得焦点。因此,在上下文菜单中,永远不会看到助记符!
有没有办法强制我的程序启用此行为?我在其他地方读到过,您可以在系统设置中的某处更改它,但我需要使用我的软件的人始终看到助记符,而不需要他们全局更改系统以使我的程序正常工作!
当用户按下 Enter 时,我必须通过 KeyDown 事件处理程序中的代码显示此菜单,因为它是用于快速编辑控件表示的值的弹出窗口。用户单击控件,可以快速更改其内容。当您在 ctrl+space 上弹出一个弹出窗口时,可以将其想象为在 C# 中,提示您可以在该确切位置插入可能的代码片段。因此,将其用作控件的“上下文菜单”属性或使用键盘“显示上下文菜单”按钮不适用。
谢谢!
【问题讨论】:
-
它应该是这样工作的。如果您的顶部菜单上有助记符并按 Alt(该菜单的键),您的助记符也会显示在子菜单中..
-
使用键盘激活菜单时会出现助记符。为此使用 Shift+F10,我们使用您键盘的专用快捷菜单键(如果有的话)。
-
可能您正在考虑快捷键的属性,您可以在属性窗口中找到它作为设计器的一部分。这将为您提供更多选项(如 Shift 和/或 Ctrl 等)。
-
是的,但不幸的是,这不是子菜单,而是上下文菜单,它通过在对象的 Click() 事件处理程序中调用 CMS.Show() 来显示。如果我按 Alt,上下文菜单会立即隐藏。
-
好了。您通过鼠标单击来显示菜单。当然加速器字符不会显示。他们不是故意的;用户使用的是鼠标,而不是键盘,因此无需查看键盘快捷键。显示菜单以响应
wm_ContextMenu消息。这将触发 Shift+F10、右键单击和上下文菜单键。
标签: c# winforms contextmenustrip