如何使用C#中的KeyDown事件使TextBox只接收数字键值?
我的表单中的这段代码会在每次按数字键时更新textBox1.Text两次如何使用C#中的KeyDown事件使TextBox只接收数字键值?,c#,textbox,numbers,key-events,C#,Textbox,Numbers,Key Events,我的表单中的这段代码会在每次按数字键时更新textBox1.Text两次 private void textBox1_KeyDown( object sender, KeyEventArgs e ) { //MessageBox.Show(); if( char.IsNumber((char)e.KeyCode) ) { textBox1.Text += (char)e.KeyCode; } } 如果可以,请解释为什么? 修改代码或为我提供更
private void textBox1_KeyDown( object sender, KeyEventArgs e ) {
//MessageBox.Show();
if( char.IsNumber((char)e.KeyCode) ) {
textBox1.Text += (char)e.KeyCode;
}
}
如果可以,请解释为什么?
修改代码或为我提供更好的解决方案
输入(在文本框1中):
输出:
您可以这样尝试:
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您可以这样尝试:
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按某个键时,一个字符已附加到文本框中。然后运行以下代码,如果该键表示一个数字,则再次附加该字符:
if (char.IsNumber((char)e.KeyCode)) {
textBox1.Text += (char)e.KeyCode;
}
如果要抑制任何不是数字的键,可以使用以下选项:
e.SuppressKeyPress = !char.IsNumber((char)e.KeyCode);
当您按键时,一个字符已附加到文本框
。然后运行以下代码,如果该键表示一个数字,则再次附加该字符:
if (char.IsNumber((char)e.KeyCode)) {
textBox1.Text += (char)e.KeyCode;
}
如果要抑制任何不是数字的键,可以使用以下选项:
e.SuppressKeyPress = !char.IsNumber((char)e.KeyCode);
根据语法,我假设您正在使用WinForms获得以下答案
按键事件没有被抑制,因此它仍然像正常的按键事件一样工作,并将字符添加到框的文本中。此外,您可以自己再次将字符添加到文本中
尝试抑制按键事件,以防按键时,您不希望允许
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (!char.IsNumber((char)e.KeyCode))
{
e.SuppressKeyPress = true;
}
}
根据语法,我假设您正在使用WinForms获得以下答案
按键事件没有被抑制,因此它仍然像正常的按键事件一样工作,并将字符添加到框的文本中。此外,您可以自己再次将字符添加到文本中
尝试抑制按键事件,以防按键时,您不希望允许
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (!char.IsNumber((char)e.KeyCode))
{
e.SuppressKeyPress = true;
}
}
请尝试此代码以仅接受数字
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar))
e.Handled = true;
}
请尝试此代码以仅接受数字
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar))
e.Handled = true;
}
@詹尼克:(没有变化。和以前一样。@詹尼克:(无更改。与以前相同。错误:不包含SuppressKeyPress请参见:将KeyPressEventArgs设置为KeyEventArgs正确。@Navenkumarv:-太好了。还更新了我的答案。很抱歉输入错误!错误:不包含SuppressKeyPress请参见:将KeyPressEventArgs设置为KeyEventArgs正确。@Navenkumarv:-太好了。在我们开始时更新了我的答案。)LH.对不起,输入错误!它也需要非数值。但是消除了字符的复制。它也需要非数值。但是消除了字符的复制。