【发布时间】:2012-08-25 21:32:18
【问题描述】:
我有一个显示为模型对话框的 Windows 窗体。它有一个ContextMenuStrip 类的上下文菜单。我在上下文菜单中设置了几个项目的快捷方式。但是此快捷方式仅在显示上下文菜单时才有效。即使没有激活上下文菜单,如何使它们工作?
我知道的唯一方法是处理表单的KeyPress 事件,递归遍历上下文菜单中的所有项目,并将其ShortcutKeys 属性与实际按下的键进行比较。如果匹配,请为此项目手动调用OnClick 事件。有更好的想法吗?
【问题讨论】:
-
嗯,我不知道为什么快捷方式在上下文菜单未激活时不起作用,但有一个建议,当你处理按键事件并确定组合键时,只需调用相关的函数到组合键。为什么要以编程方式迭代上下文菜单?
-
因为这样可以避免代码重复。我想在菜单中有快捷方式,所以我必须在那里指定它们,并且必须在那里设置处理程序。这应该是我唯一指定两者的地方。
-
我可以给你的一个建议是,尝试使用 ctrl 键生成快捷方式,看看它在菜单关闭时是否有效?
-
不确定您的意思。我设置了快捷键
Ctrl+1,Ctrl+2,...,它们在菜单被激活时工作,在菜单未显示时不工作。 -
我也想说同样的话。拥有 Ctrl+1、Ctrl+2 等快捷键。实际上 Alt 键激活菜单。也许你应该试试 Alt+1, Alt+2
标签: c# winforms events keyboard-shortcuts contextmenu