我有一个textbox
,只需要接受数字(可以是十进制值)和负值。
目前在KeyPress
事件中我有类似的东西
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != '.')
{
e.Handled = true;
}
为了允许负值,我还应该做什么?
谢谢
最佳答案
if (!char.IsControl(e.KeyChar) && (!char.IsDigit(e.KeyChar))
&& (e.KeyChar != '.') && (e.KeyChar != '-'))
e.Handled = true;
// only allow one decimal point
if (e.KeyChar == '.' && (sender as TextBox).Text.IndexOf('.') > -1)
e.Handled = true;
// only allow minus sign at the beginning
if (e.KeyChar == '-' && (sender as TextBox).Text.Length > 0)
e.Handled = true;
正如L.B在注释中正确提到的那样,这不允许使用
3E-2
这样的高级表示法,但是对于简单的数字,它可以解决问题。