发布日期:2018-03-26
C#如何限制Textbox文本框只能输入数字?+ 查看更多
C#如何限制Textbox文本框只能输入数字?
+ 查看更多
发布日期:2018-02-24 17:09
分类:C#
浏览次数:1745
我正在写一个含有Textbox文本框控件的窗体应用程序,并且我希望这个文本框只能接受整数值。我曾经通过重载KeyPress事件以删除不符合规范的字符来完成这种验证。我也曾尝试过考虑使用MaskedTextBox控件,但我仍想要一个更通用的、能通过正则表达式或者依赖于其他控件的值而进行工作的解决方案。我希望得到的解决方法是能够使用户无法输入非数字字符或者在用户输入非数字字符时立即向用户提供关于无效字符的反馈。
回答:
有两种方法可以满足你的需求:
1.使用NumericUpDown控件代替Textbox。 NumericUpDown很好的一点就是能够对输入的数据进行过滤。当然,在这个控件的作用下用户能够通过操作键盘的上下箭头来增加或减少当前数值的大小。
2.增加适当的键盘处理事件,以防止任何数字的输入。我曾经在一个标准的TextBox控件中用以下这两个事件处理程序成功解决这个问题:
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; } }
如果你希望的TextBox控件总不能出现小数位,你可以删除对”.”排查(以及随后检查多个'.'的排查)。如果你希望的TextBox控件允许负值,您还可以添加“ - ”的排查。
如果要限制用户的输入数字的长度,你可以这样设置:
textBox1.MaxLength = 2; // this will allow the user to enter only 2 digits(这将允许用户只能输入2位数字)