有没有办法确定某个密钥是A-Z
中的字母/数字(0-9
,KeyEventArgs
)?或者我必须自己制作?我找到了e.KeyCode的方法,这是准确的吗?
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))
答案 0 :(得分:25)
您可以在事件参数的char.IsLetterOrDigit()
上使用KeyCode
方法:
bool isLetterOrDigit = char.IsLetterOrDigit((char) keyEventArgs.KeyCode);
答案 1 :(得分:9)
答案 2 :(得分:8)
在WPF中?使用PreviewTextInput或TextInput事件而不是KeyDown
答案 3 :(得分:0)
Char.IsLetter()接受一些OEM密钥代码,这些代码被视为字母字符。
我的情况是,当我键入键盘(波浪号)时,此键码已返回OEM3。
我检查了值(波浪号)并显示
“ 192'A'”
但是实际输入的是“ A ”
“ 65'A'”
结果,两个都通过Char.IsLetter()作为True。
为避免这种情况,我将下面的代码放进去。
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;
}