Jon*_*Jon 22
这样的事情会做:
if ((e.Key >= Key.A && e.Key <= Key.Z) || (e.Key >= Key.D0 && e.Key <= Key.D9) || (e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9))
Run Code Online (Sandbox Code Playgroud)
当然,您还必须检查是否根据您的要求没有按下CTRL等修饰键.
Kha*_*han 11
e.Key 给你一个成员 enum System.Windows.Input.Key
您应该能够执行以下操作以确定它是字母还是数字:
var isNumber = e.Key >= Key.D0 && e.Key <= Key.D9;
var isLetter = e.Key >= Key.A && e.Key <= Key.Z;
Run Code Online (Sandbox Code Playgroud)
在您的特定情况下,Jon和Jeffery提供的答案可能是最好的,但是如果您需要测试字符串的其他字母/数字逻辑,那么您可以使用KeyConverter类将 a 转换System.Windows.Input.Key为字符串
var strKey = new KeyConverter().ConvertToString(e.Key);
Run Code Online (Sandbox Code Playgroud)
您仍然需要检查是否有任何修饰键被按下(Shift、Ctrl 和 Alt),还应该注意这仅适用于字母和数字。特殊字符(如逗号、引号等)的显示方式与e.Key.ToString()
小智 5
试试这个,它有效。
private void txbNumber_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key >= Key.D0 && e.Key <= Key.D9) ; // it`s number
else if (e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9) ; // it`s number
else if (e.Key == Key.Escape || e.Key == Key.Tab || e.Key == Key.CapsLock || e.Key == Key.LeftShift || e.Key == Key.LeftCtrl ||
e.Key == Key.LWin || e.Key == Key.LeftAlt || e.Key == Key.RightAlt || e.Key == Key.RightCtrl || e.Key == Key.RightShift ||
e.Key == Key.Left || e.Key == Key.Up || e.Key == Key.Down || e.Key == Key.Right || e.Key == Key.Return || e.Key == Key.Delete ||
e.Key == Key.System) ; // it`s a system key (add other key here if you want to allow)
else
e.Handled = true; // the key will sappressed
}
Run Code Online (Sandbox Code Playgroud)