ToolStripMenuItem mi = new ToolStripMenuItem();
var value = new KeysConverter().ConvertFromString("PageUp");
// value = Enum.Parse(typeof (Keys), "PageUp");
var cast = (Keys) value;
mi.ShortcutKeys = cast;
Я пытаюсь преобразовать строку «PageUp» в соответствующее значение System.Windows.Forms.Keys
.
Однако оба подхода анализа (Enum.Parse()
против KeysConverter.ConvertFromString()
) устанавливают value
в LButton | Space
, что приводит к InvalidEnumArgumentException
в последней строке.
Справочная информация:
System.Windows.Forms.Keys
- перечисление Flags
- PageUp имеет значение 33, LButton - 1, пробел - 32 ==>, что означает
Enum.Parse
, работает правильно.
Как правильно разобрать "PageUp" в Keys.PageUp
?
Обновление:
Дурак я. синтаксический анализ работает правильно.
ToolStripMenuItem mi = new ToolStripMenuItem();
mi.ShortcutKeys = Keys.PageUp;
но этот бросает вышеупомянутое исключение.
Поэтому, поняв, я заколдовал не то дерево:
Как можно назначить Keys.PageUp
на ToolStripMenuItem.ShortcutKeys
?