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工具正确处理。