我有一个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这样的高级表示法,但是对于简单的数字,它可以解决问题。

10-08 18:56