C# 我可以确定KeyEventArg是字母还是数字吗?

C# 我可以确定KeyEventArg是字母还是数字吗?,c#,winforms,event-handling,keyeventargs,C#,Winforms,Event Handling,Keyeventargs,是否有方法确定KeyEventArgs中的键是否为字母/数字(a-Z,0-9)?还是我必须自己做?我找到了一种方法,准确吗 if(((e.KeyCode >= Keys.A && e.KeyCode <= Keys.Z ) || (e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9 ) || (e.KeyCode >= Keys.NumPad0 && e.

是否有方法确定
KeyEventArgs
中的键是否为字母/数字(
a-Z
0-9
)?还是我必须自己做?我找到了一种方法,准确吗

if(((e.KeyCode >= Keys.A       && e.KeyCode <= Keys.Z )
 || (e.KeyCode >= Keys.D0      && e.KeyCode <= Keys.D9 )
 || (e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9))
如果((e.KeyCode>=Keys.A&&e.KeyCode=Keys.D0&&e.KeyCode=Keys.NumPad0&&e.KeyCode和

可以在事件参数的

bool isLetterOrDigit = char.IsLetterOrDigit((char) keyEventArgs.KeyCode);

在WPF中?使用PreviewtOutput或TextInput事件而不是KeyDown

接受一些被视为字母字符的OEM键代码

我的情况是,当我键入一个键盘(tilde)时,这个键码被返回到OEM3

我检查了值(tilde),它说

“192‘A’”

但实际输入的“A”是

“65‘A’”

结果,这两项都被认为是正确的

为了避免这种情况,我在下面添加了代码

private bool IsAlphabetOrDigit(System.Windows.Forms.KeyEventArgs e)
{
    var keyCode = (char)e.KeyCode;
    if ( false == char.IsNumber( keyCode ) &&  false == ((keyCode >= 'a' && keyCode <= 'z') || (keyCode >= 'A' && keyCode <= 'Z')))
    {
        return false;
    }

    return true;
}
private bool IsAlphabetOrDigit(System.Windows.Forms.KeyEventArgs e)
{
var keyCode=(char)e.keyCode;

如果(false==char.IsNumber(keyCode)&&false==((keyCode>='a'&&keyCode='a'&&keyCode='a'&&keyCode)如何定义字母?只有a-Z或其他语言中的字母?数字也是如此。而且一个键甚至不是字符(键和字符之间没有1对1的对应关系),因此它不能是字母/数字。您无法从按键事件中知道这一点。只有在虚拟键与用户的键盘布局转换后,您才能知道。请改用按键事件。中有许多类似的功能。好的,我不知道!回答很好。这实际上似乎对azerty数字不起作用。它们要求shift为pressed来访问它们,我担心shift+不管实际的键是什么,都不会被Char工具正确处理。