我有一个ToolStripMenuItem作为我的MenuStripForm的下拉菜单。该菜单的内容根据表单其余部分的状态而变化,并循环填充。

问题是,现在我想添加功能,使此菜单中的项目根据其在列表中的位置具有键盘快捷键。列表中的第一项应为Ctrl + 1,第二项应为Ctrl + 2,依此类推。

由于ShortcutKeys是使用Keys枚举设置的,所以我不知道如何将递增值映射到枚举中的适当值。我曾希望像这样的事情能够奏效,但是没有:

newToolStripMenuItem.ShortcutKeys = Keys.Control | (Keys.D0 + menuItemNumber++);


编辑

可能还有其他情况。根据this asker,我的最初解决方案应该已经奏效,并且Migol提出的解决方案会产生相同的结果。 ShortcutKeys中的值显示为某些奇怪的字符组合,没有明显的模式。

最佳答案

您可以像这样使用Enum.Parse方法:

string enumName = "D" + menuItemNumber++;
newToolStripMenuItem.ShortcutKeys = Keys.Control | (Keys)Enum.Parse(typeof(Keys), enumName);


Enum.Parse documentation

09-28 00:43