3

我有一个文本框,我只想输入数字。但是如果我打错了数字,我不能退格来纠正它。我怎样才能让退格键起作用。谢谢

    private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (Char.IsNumber(e.KeyChar) != true)
        {
            e.Handled = true;
        }
    }
4

9 回答 9

3

您也可以添加一个检查以允许控制字符:

if (Char.IsControl(e.KeyChar) != true && Char.IsNumber(e.KeyChar) != true)
{
    e.Handled = true;
}

更新:为了回应 person-b 对代码的评论,他/她建议采用以下风格(这也是我个人写这个的方式):

if (!Char.IsControl(e.KeyChar) && !Char.IsNumber(e.KeyChar))
{
    e.Handled = true;
}
于 2009-06-29T22:11:38.137 回答
3

正确答案是:

private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
    e.Handled = !сhar.IsNumber(e.KeyChar) && (e.KeyChar != '\b');
}
于 2009-06-29T22:56:57.673 回答
1

您还可以覆盖 TextChanged 事件:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    string text = (sender as TextBox).Text;

    StringBuilder builder = new StringBuilder(String.Empty);

    foreach (char character in text)
    {
        if (Char.IsDigit(character))
        {
            builder.Append(character);
        }
    }

    (sender as TextBox).Text = builder.ToString();
}

请注意,您必须添加代码来设置插入符号的位置。

于 2009-06-29T22:42:57.560 回答
0
private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
     if (!Char.IsNumber(e.KeyChar) && e.KeyCode != Keys.Back)
          e.Handled = True;
}
于 2009-06-29T22:11:53.240 回答
0

上面的一个稍微干净的格式:

 private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
 {
   e.Handled = !(Char.IsNumber(e.KeyChar) || (e.KeyChar==Keys.Back));
 }
于 2009-06-29T22:14:56.447 回答
0

我发现以下效果很好。它包括允许退格键、箭头键删除键等的额外例外。 如何使用 jQuery 在 HTML 输入框中只允许数字(0-9)?

于 2011-07-25T23:39:11.637 回答
0
private void txt_KeyPress(object sender, KeyPressEventArgs e)
{
    if (Char.IsDigit(e.KeyChar) || e.KeyChar == '\b')
    {
        // Allow Digits and BackSpace char
    }        
    else
    {
        e.Handled = true;
    }
}

另请参阅链接: 屏蔽文本框以仅接受小数 小数/12209854#12209854

于 2012-09-07T10:21:33.583 回答
0

您可以在 Key Press 事件中使用以下内容:

      private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!Char.IsDigit(e.KeyChar) & (e.KeyChar != 8)) e.Handled = true; 
    }
于 2018-05-06T10:32:38.247 回答
-1

按下您的文本框然后输入事件从事件双击 KeyPress 然后编写此代码

if( e.KeyChar <'0' || e.KeyChar > '9' )
if(e.KeyChar!=08)
e.Handled=true;
于 2021-03-23T08:44:15.717 回答