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

それらは同じキーではないため、同じではありません。Keyvalue は、キーが表す値ではなく、キーボードで押した特定のキーを抽象化したものです。

つまり、単純な OR を使用して、テンキー キーまたはその他のキーのいずれかが押されているかどうかを簡単に確認できます。

于 2015-10-05T12:03:36.983 に答える