C# 为什么数字键盘数字和常规数字在KeyEvent中不相同?
此代码不允许我从数字键盘输入数值C# 为什么数字键盘数字和常规数字在KeyEvent中不相同?,c#,textbox,key-events,numpad,C#,Textbox,Key Events,Numpad,此代码不允许我从数字键盘输入数值 private void textBox1_KeyDown( object sender, KeyEventArgs e ) { e.SuppressKeyPress = !( (e.KeyValue >= 48 && e.KeyValue <= 57) ) } private void textBox1\u KeyDown(对象发送方,KeyEventArgs e){ e、 SuppressKeyPress=!((e.Ke
private void textBox1_KeyDown( object sender, KeyEventArgs e ) {
e.SuppressKeyPress = !( (e.KeyValue >= 48 && e.KeyValue <= 57) )
}
private void textBox1\u KeyDown(对象发送方,KeyEventArgs e){
e、 SuppressKeyPress=!((e.KeyValue>=48&&e.KeyValue一种解决方案是使用KeyPress
事件和TryParse
方法,如下所示:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
int n;
e.Handled = !int.TryParse(e.KeyChar.ToString(), out n);
}
e.SuppressKeyPress = !((e.KeyValue >= 48 && e.KeyValue <= 57 || (e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9)));
或者您可以像这样检查numpad
:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
int n;
e.Handled = !int.TryParse(e.KeyChar.ToString(), out n);
}
e.SuppressKeyPress = !((e.KeyValue >= 48 && e.KeyValue <= 57 || (e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9)));
e.SuppressKeyPress=!((e.KeyValue>=48&&e.KeyValue=Keys.NumPad0&&e.KeyCode它们不同,因为它们不是同一个键。KeyValue是您在键盘上按下的特定键的抽象,而不是该键所代表的值的抽象
这就是说,您可以简单地检查是否用简单或。键按下了numpad键或另一个键,因为它们毕竟是不同的键,即使它们所代表的字符是相同的
要获得更好的结果,可以使用Keys
enum和KeyCode
属性:
e.SuppressKeyPress = !((e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9) || (e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9))
如果(Key.NumPad9.Equals(e.Key)| | Key.D9.Equals(e.Key))你可以用likethis@madan对于我应该提到的每一个键值?使用带中断的开关盒有没有其他方法可以简化它。我只需要允许文本框中的数字和“+”、“-”、“/”和“*”?@madan,这真是一个糟糕的建议。你已经解决了一个简单的问题,并建议写一个可怕的乱七八糟的东西来解决它。请不要重新编译停止使用开关
解决任何问题。