为什么KeyEvent中的数字小键盘数字和常规数字不一样?

Nav*_*r V 3 c# textbox key-events numpad

此代码不允许我从数字小键盘输入数值.

private void textBox1_KeyDown( object sender, KeyEventArgs e ) {
    e.SuppressKeyPress = !( (e.KeyValue >= 48 && e.KeyValue <= 57) )
}
Run Code Online (Sandbox Code Playgroud)

如何包含一般数值(包括常规键和数字键)?

Lui*_*grs 6

因为毕竟它们是不同的键,即使它们代表的字符是相同的.

要获得更好的结果,您可以使用Keys枚举和KeyCode属性:

e.SuppressKeyPress = !((e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9) || (e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9))
Run Code Online (Sandbox Code Playgroud)

或者使用KeyPress事件,因为在事件args中你将有char代码.

在KeyPress事件处理程序中,您可以执行以下操作:

 e.Handled = !Char.IsDigit(e.KeyChar)
Run Code Online (Sandbox Code Playgroud)