我需要一个以String作为参数的函数,并返回一个System.Windows.Input.Key。 E.G:
var x = StringToKey("enter"); // Returns Key.Enter
var y = StringToKey("a"); // Returns Key.A
除了if / else或switch语句之外,有没有办法做到这一点?
答案 0 :(得分:15)
查看KeyConverter,它可以将Key
转换为string
。
KeyConverter k = new KeyConverter();
Key mykey = (Key)k.ConvertFromString("Enter");
if (mykey == Key.Enter)
{
Text = "Enter Key Found";
}
答案 1 :(得分: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
}
请记住,字符串必须完全匹配(好吧,几乎;它是一个不区分大小写的比较,因为true
参数)枚举值的名称。
答案 2 :(得分:3)
var key = Enum.Parse(typeof(Key), "Enter");
不区分大小写的选项:
var key = Enum.Parse(typeof(Key), "enter", true);