在我的Windows窗体应用程序中,我有一个TextBox并将KeyPress事件应用于它只接受数字。目前,我的脚本是这样的:
if (!char.IsControl(e.KeyChar)
&& !char.IsDigit(e.KeyChar)
&& e.KeyChar != '.')
{
e.Handled = true;
}
问题在于e.KeyChar != '.'
它不起作用,我的TextBox接受数字和点。我不明白为什么因为我对脚本说如果按下的键与点(。)不同,则不输入它。我收到的一些值的例子是:
!=
在那里没有做任何事情。答案 0 :(得分:3)
除非我遗漏了某些内容,否则检查
e.Handled = !(char.IsControl(e.KeyChar) || char.IsDigit(e.KeyChar) || e.KeyChar == '.');
这绝不是一个完整的解决方案,但是因为这仍然允许像12345.67.89.
这样的值,这些值显然没有正确的数字格式。
更强大的解决方案是使用MaskedTextBox或允许自由文本,但验证整个输入,而不是每个人char
。
答案 1 :(得分:1)
更好的解决方案。有了这个,您只能使用:0123456789和退格
if (!char.IsDigit(e.KeyChar) && e.KeyChar != '\b')
e.Handled = true