我有一个ToolStripMenuItem作为我的MenuStrip的Form的下拉菜单。该菜单的内容根据表单其余部分的状态而变化,并循环填充。
问题是,现在我想添加功能,使此菜单中的项目根据其在列表中的位置具有键盘快捷键。列表中的第一项应为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