C# 如何在C中允许文本框上同时使用退格和数字#

C# 如何在C中允许文本框上同时使用退格和数字#,c#,winforms,visual-studio,visual-studio-2012,C#,Winforms,Visual Studio,Visual Studio 2012,如何在文本框上只允许退格和数字 我尝试过几种解决方案,但都不起作用,或者只起了一半作用: 到目前为止,我的代码是: private void textBox1_TextChanged(object sender, EventArgs e) { try { if (textBox1.Text != String.Empty) textBox1.Clear(); else value = Convert.

如何在文本框上只允许退格和数字

我尝试过几种解决方案,但都不起作用,或者只起了一半作用:

到目前为止,我的代码是:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    try
    {
        if (textBox1.Text != String.Empty)
            textBox1.Clear();
        else
            value = Convert.ToInt32(textBox1.Text);//store the value from the textbox in variable "value"
    }
    catch (Exception e1)
    {
        MessageBox.Show(e1.Message);
    }
}
我想要一个仅限于
private void textBox1\u TextChanged()

的解决方案,它看起来像是有
Mask=“99900000”
(根据您需要的数字,有多少
0
9
0
是必需的数字,
9
是可选的)是一个很好的解决方案

更新

可能,原始答案不清楚-但如果您使用的是MaskedTextBox-那么您不需要在
textBox1\u TextChanged
事件处理程序中进行一些特殊检查,因为所有检查都将由MaskedTextBox本身完成,并且您的掩码将确保文本只包含数字

所以你的逻辑可以简化为

private void textBox1_TextChanged(object sender, System.EventArgs e)
{
    int value;

    if (String.IsNullOrEmpty(textBox1.Text))
        value = 0; // modify it according to your logic - what should be if textbox is empty
    else    
        value = Convert.ToInt32(textBox1.Text);
}

如果输入else,则块texBox1.text将为string.empty。转换为int有什么意义?我想省略
private void textBox1\u KeyPress()
。我试过了,但它不起作用。我需要这个值是一个整数,这样我就可以使用它了later@Dylan中的所有答案都很糟糕,无论是在实现还是用户体验方面。在任何答案中都没有防止粘贴的保护措施,许多建议是在输入一个无效字符时清除整个文本框,没有国际化,按键处理会阻止导航(箭头键、主/结束、退格)。。。答案是“使用MaskedTextBox”。我不认为这是重复的,因为我不希望实现:)我希望另一个解决方案适合我的需要。这标记为重复,但在该链接中不存在涉及
退格
键的答案。或者处理我的错误。(见上面的评论)我不确定我是否明白你的意思。
backspace
与文本框内容的关系如何?退格的正常行为-只是删除文本框中的最后一个符号。你为什么要用别的方法处理它?或者说
backspace
你指的是不寻常的事情吗?我的意思是:如果我在文本框中输入了一些数字,比如说我打错了,我按backspace删除它们,我会收到一个有错误的消息框。我不知道怎么处理这件事。任何与我的代码相关的代码片段都会非常有用appreciated@Alexander见最新答案。我成功了。谢谢,@Andy。不过,我还有一个问题:当我插入一封信时,会再次显示错误消息(这很好,因为不允许用户输入字母)。我想添加我自己的消息,而不是那个错误。