如何将文本框限制为仅按键事件上的数字和单个小数点?

时间:2014-10-22 15:27:59

标签: c# textbox decimal

这是我目前的代码,它只接受数字,我应该添加什么来允许一个小数点?

 private void txtPurchasePrice_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (!char.IsNumber(e.KeyChar))
                {
                    e.Handled = true;
                }

2 个答案:

答案 0 :(得分:4)

这对我有用!

  private void txtPurchasePrice_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;
    }
}

答案 1 :(得分:0)

尝试将文本框的值解析为数字,如果通过则允许输入,否则禁止输入。换句话说,不要逐个字符地检查值,而是在添加每个字符后检查整个值。

类似于以下未经测试的代码:

private void txtPurchasePrice_KeyPress(object sender, KeyPressEventArgs e)
{
  e.handled = !Double.tryParse(txtPurchasePrice.text);
}

或者,您可以保留小数位数,如果计数为1则拒绝小数。