如何使用C#中的KeyDown事件使TextBox只接收数字键值?

如何使用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; } } 如果可以,请解释为什么? 修改代码或为我提供更

我的表单中的这段代码会在每次按数字键时更新textBox1.Text两次

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.对不起,输入错误!它也需要非数值。但是消除了字符的复制。它也需要非数值。但是消除了字符的复制。