我有一个带有文本框控件的 Windows 窗体应用程序,我只想接受整数值。在过去,我通过重载 KeyPress 事件并仅删除不符合规范的字符来完成这种验证。我查看了 MaskedTextBox 控件,但我想要一个更通用的解决方案,它可以使用正则表达式,或者取决于其他控件的值。
理想情况下,这会表现为按下非数字字符将不会产生任何结果或立即向用户提供有关无效字符的反馈。
两种选择:
改用 a NumericUpDown。NumericUpDown 为您进行过滤,这很好。当然,它还使您的用户能够点击键盘上的向上和向下箭头来增加和减少当前值。
NumericUpDown
处理适当的键盘事件以防止除数字输入之外的任何内容。我在标准 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
textBox1.MaxLength = 2; // this will allow the user to enter only 2 digits