在循环中填充ShortcutKeys

时间:2014-03-25 13:57:51

标签: c# .net winforms c#-2.0

我有ToolStripMenuItem作为附加到我MenuStripForm的下拉菜单。此菜单的内容根据表单其余部分的状态而变化,并在循环中填充。

问题在于,现在我想添加此菜单中的项目具有基于其在列表中的位置的键盘快捷键的功能。列表中的第一项应为Ctrl + 1,第二项为Ctrl + 2,等等。

由于使用ShortcutKeys枚举设置了Keys,我不知道如何将递增值映射到枚举中的正确值。我曾希望这样的东西能起作用,但事实并非如此:

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

修改

可能还有其他事情发生。根据{{​​3}},我的初始解决方案应该有效,this asker提出的解决方案产生相同的结果。 ShortcutKeys中的值显示为一些奇怪的字符组合,没有明显的模式。

2 个答案:

答案 0 :(得分:1)

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

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

Enum.Parse documentation

答案 1 :(得分:0)

这很尴尬,但这个问题与本文中提到的任何内容完全无关。这是一个愚蠢的错误,是由于我自己糟糕的编程习惯和拼写错误造成的。

在我最初的问题中,我将本地变量的名称从processorToolStripMenuItem更改为newToolStripMenuItem,因为这更适合应用程序的上下文。我添加的项目是一个名为procesorToolStripMenuItem的字段,正如您所看到的那样,它缺少了一个'。

对于设置键盘快捷键的代码行,我做了相同的拼写错误,因此设置了错误的键盘快捷键。它们本来就不应该被命名为彼此如此相似的东西。