我有previewKeyDown
方法在我的窗口,我想知道的按键只有AZ
字母或1-0
号(不anyF1..12,回车,Ctrl,Alt等-只是字母或数字)。
我试过Char.IsLetter
,但我需要给焦炭,所以e.key.ToString()[0]
不起作用,因为它几乎每次一个字母。
我有previewKeyDown
方法在我的窗口,我想知道的按键只有AZ
字母或1-0
号(不anyF1..12,回车,Ctrl,Alt等-只是字母或数字)。
我试过Char.IsLetter
,但我需要给焦炭,所以e.key.ToString()[0]
不起作用,因为它几乎每次一个字母。
像这样的东西会做什么:
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))
当然,你也必须检查,像CTRL没有修饰键是根据您的要求按下。
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;
在特定情况下提供的答案乔恩和杰弗里可能是最好的,但是如果你需要测试你的字符串一些其他的字母/数字逻辑,那么你可以使用KeyConverter类的转换System.Windows.Input.Key
为字符串
var strKey = new KeyConverter().ConvertToString(e.Key);
您仍然需要进行检查,看是否被按住任何修饰键(Shift,Ctrl和Alt),并且还应该指出的是,这只适用于字母和数字。 特殊字符(如逗号,引号等)将得到显示一样e.Key.ToString()
试试这个,它的工作原理。
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
}
添加到Microsoft.VisualBasic程序的引用,并使用VB IsNumeric函数,与char.IsLetter组合()。
你可以把一些代码来显示你想要什么? 不应该这样对你的工作
if(e.key.ToString().Length==1)
`Char.IsLetter(e.key.ToString()[0])`
else
//