我如何创建一个只接受数字的文本框?
我如何创建一个只接受数字的文本框?
我有一个Windows窗体应用程序,其中有一个文本框控件,我想让它只接受整数值。过去,我通常通过重载KeyPress事件来进行这种验证,并删除不符合规范的字符。我已经查看了MaskedTextBox控件,但我希望能有一个更通用的解决方案,可以使用正则表达式或取决于其他控件的值。
理想情况下,这样的行为是,按下非数字字符要么不会产生结果,要么立即向用户提供有关无效字符的反馈。
admin 更改状态以发布 2023年5月23日
两个选择:
-
使用
NumericUpDown
代替。 NumericUpDown为您过滤数据,这很好。 当然,它还可以让您的用户通过键盘上的上下箭头增加和减少当前值。 -
处理适当的键盘事件以防止除数字以外的任何输入。 我在标准文本框上使用了这两个事件处理程序:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.')) { e.Handled = true; } // only allow one decimal point if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1)) { e.Handled = true; } }
如果您的文本框不允许小数点,则可以删除对'.'
的检查(以及对多个'.'
的后续检查)。 如果您的文本框应该允许负值,则还可以添加'-'
的检查。
如果您想限制数字位数,则使用:textBox1.MaxLength = 2; // 这将只允许用户输入2位数字