【问题标题】:How to allow both backspace and digits on a textbox in C# [duplicate]如何在 C# 中的文本框中同时允许退格和数字 [重复]
【发布时间】:2015-05-08 03:12:45
【问题描述】:

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

我尝试了几种解决方案,但都没有奏效,或者只奏效了:

到目前为止我的代码:

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_TextChanged()的解决方案

【问题讨论】:

  • 如果你输入 else 块 texBox1.text 将是 string.empty。转换成 int 有什么意义???
  • 我想省略private void textBox1_KeyPress()。我试过了,还是不行
  • 我需要这个值是一个整数,这样我以后可以使用它
  • @Dylan that Q&A 中的所有答案在实施和用户体验方面都非常糟糕。没有防止粘贴任何答案的保护措施,许多建议是在输入一个无效字符时清除整个文本框,没有国际化,KeyPress 处理阻止导航(箭头键,Home/End,Backspace)......答案是“使用 MaskedTextBox”。
  • 我不认为这是重复的,因为我不想要那个实现 :)

标签: c# winforms visual-studio visual-studio-2012


【解决方案1】:

看起来MaskedTextBox 具有Mask = "99900000"09 的数量随您的需要而定,0 是强制性数字,9 是可选的)对您来说是一个很好的解决方案。

更新

可能,原始答案并不清楚 - 但如果您使用的是 MaskedTextBox - 那么您不需要在 textBox1_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);
}

【讨论】:

  • 我想要另一种适合我需要的解决方案。这被标记为重复,但在该链接中不存在涉及backspace 键的答案。或者任何东西来处理我的错误。 (见上面的cmets)
  • 我不确定我是否明白你的意思。 backspace 与文本框内容有什么关系?退格的正常行为 - 只是擦除文本框中的最后一个符号。为什么你想以其他方式处理它?或者backspace你的意思是不寻常的东西?
  • 我的意思是:如果我在那个文本框中输入了一些数字,假设我输入错误,我按 backspace 键删除它们,我会收到一个带有错误。我不知道如何处理这个。任何与我的代码相关的 sn-p 都将不胜感激
  • @Alexander 查看更新的答案
  • 我成功了。谢谢@Andy。不过我还有一个问题:当我插入一个字母时,它会再次出现该错误消息(这很好,因为不允许用户输入字母)。而不是那个错误,我想添加我自己的消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-08
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多