3

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

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

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

4

3 回答 3

6

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

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

e.SuppressKeyPress = !((e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9) || (e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9))

或使用KeyPress事件,因为您将在事件参数中有字符代码。

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

 e.Handled = !Char.IsDigit(e.KeyChar)
于 2015-10-05T12:04:19.133 回答
1

一种解决方案是使用这样的KeyPress事件和TryParse方法:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
     int n;
     e.Handled = !int.TryParse(e.KeyChar.ToString(), out n);
}

或者你可以NumPads像这样检查:

e.SuppressKeyPress = !((e.KeyValue >= 48 && e.KeyValue <= 57 || (e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9)));
于 2015-10-05T12:01:52.457 回答
1

它们不一样,因为它们不是同一个键。Keyvalue 是您在键盘上按下的特定键的抽象,而不是键所代表的值。

也就是说,您可以使用简单的 OR 来检查是否按下了小键盘键或另一个键。

于 2015-10-05T12:03:36.983 回答