C# 如何确定密钥是字母还是数字?

C# 如何确定密钥是字母还是数字?,c#,xna,xna-4.0,key,C#,Xna,Xna 4.0,Key,返回当前按下的键的数组。通常,我会使用键来确定键是字母还是数字,但给定的类型是Keys枚举,因此没有KeyChar属性 强制转换也不起作用,因为例如,像keys.F5这样的键在强制转换为字符时会变成字母t。在这种情况下,F5将被视为字母或数字,但显然不是 那么,如果对字符进行强制转换会产生不可预测的结果,那么如何确定给定的键枚举值是字母还是数字呢?拥有自己的表/哈希集,以将键枚举映射到感兴趣的类型 只有大约一百个不同的值,所以表不会太大。如果您担心内存中的大小-它是每个枚举值一个字节(如果使用由

返回当前按下的键的
数组。通常,我会使用键来确定键是字母还是数字,但给定的类型是
Keys
枚举,因此没有
KeyChar
属性

强制转换也不起作用,因为例如,像
keys.F5
这样的键在强制转换为字符时会变成字母
t
。在这种情况下,
F5
将被视为字母或数字,但显然不是


那么,如果对字符进行强制转换会产生不可预测的结果,那么如何确定给定的
枚举值是字母还是数字呢?

拥有自己的表/哈希集,以将
枚举映射到感兴趣的类型

只有大约一百个不同的值,所以表不会太大。如果您担心内存中的大小-它是每个枚举值一个字节(如果使用由
值索引的字节数组)。

公共静态bool IsKeyAChar(键)
{

return key>=Keys.A&&key=Keys.D0&&key=Keys.NumPad0&&key鉴于“数字键”对应于
枚举中的特定范围,您不能只检查您的键是否属于任何范围吗

Keys[] keys = KeyboardState.GetPressedKeys();
bool isDigit = keys.Any(key =>
    key >= Keys.D0      && key <= Keys.D9 || 
    key >= Keys.NumPad0 && key <= Keys.NumPad9);
Keys[]Keys=KeyboardState.GetPressedKeys();
bool isDigit=key.Any(key=>

key>=Keys.D0&&key=Keys.NumPad0&&key您希望F5被标记为字母或数字?请看这里@SwearWord:No。问题是当
Keys.F5
被强制转换为字符时,它会变成
t
键。F5
应该无法通过is字母或数字测试。来自MSDN XNA论坛的可能会有所帮助。@RyanPeschel are yo如果前Kamil的链接提供了很好的方法,你对按键时键入的字母感兴趣,或者总是与键直接对应的英文字母感兴趣。在键枚举中找不到()
Keys[] keys = KeyboardState.GetPressedKeys();
bool isDigit = keys.Any(key =>
    key >= Keys.D0      && key <= Keys.D9 || 
    key >= Keys.NumPad0 && key <= Keys.NumPad9);