来自字符串的ShortcutKey

Vyk*_*tor 4 .net c# keyboard-shortcuts

我想提供用户ToolStripMenuItem.ShortcutKeys通过配置文件设置的选项,所以我发现我需要以某种方式转换stringKeys.

已经找到了如何使用简单值来做到这一点Enum.Parse,但它无法识别如下格式:

  • Ctrl+i (末尾有空格)
  • i
  • Ctrl+Alt+Esc

问:有没有任何标准化的解析stings(Ctrl+i)的方法Keys

我想避免编写我自己的函数,将文本拆分成碎片,然后分别处理每个case/special字符串.

Han*_*ant 11

您在"属性"窗口中看到的ShortcutKeys属性的字符串由TypeConverter生成.您也可以在自己的代码中使用该类型转换器.像这样:

    var txt = "Ctrl+I";
    var cvt = new KeysConverter();
    var key = (Keys)cvt.ConvertFrom(txt);
    System.Diagnostics.Debug.Assert(key == (Keys.Control | Keys.I));
Run Code Online (Sandbox Code Playgroud)

一定要提防ICtrl+Alt+Escape无效的快捷键.KeysConverter不会抱怨,当您分配ShortCutKeys属性时,您将获得异常.用try/except包装以捕获无效的配置数据.