字符串到System.Windows.Input.Key

Ent*_*ity 6 c#

我需要一个以String作为参数的函数,并返回一个System.Windows.Input.Key.例如:

var x = StringToKey("enter"); // Returns Key.Enter
var y = StringToKey("a"); // Returns Key.A
Run Code Online (Sandbox Code Playgroud)

除了if/else或switch语句之外,还有什么方法可以做到这一点吗?

Bug*_*der 16

看看KeyConverter,它可以转换为a Key和from string.

KeyConverter k = new KeyConverter();
Key mykey = (Key)k.ConvertFromString("Enter");
if (mykey == Key.Enter)
{
    Text = "Enter Key Found";
}
Run Code Online (Sandbox Code Playgroud)

  • @Etienne:我相信 BugFinder 在写答案时可能一直在考虑 Forms 版本,但 WPF 版本仍然可用。我继续调整示例以适应这一点。 (2认同)

Eti*_*tel 9

Key是一个枚举,所以你可以像任何枚举一样解析它:

string str = /* name of the key */;
Key key;
if(Enum.TryParse(str, true, out key))
{
    // use key
}
else
{
    // str is not a valid key
}
Run Code Online (Sandbox Code Playgroud)

请记住,字符串必须完全匹配(好吧,几乎;由于该true参数,它是不区分大小写的比较)枚举值的名称.