如何只允许输入 0-99.99 之间的数字

本文关键字:0-99 之间 数字 输入 许输入 | 更新日期: 2023-09-27 18:36:25

如何限制用户在文本框中输入除 0 到 99.99 之间的值以外的任何内容

我的代码似乎有效,但是,它将允许输入任何数字。它只允许数字和一个点一次。但它仍然允许大于 99.99 的值

在我的代码下面:

   private void InputMargin_KeyPress(object sender, KeyPressEventArgs e)
    {
        try
        {
            // allow only number and dot
            if (   ! char.IsControl(e.KeyChar)
                && ! char.IsDigit(e.KeyChar)
                && e.KeyChar != '.'
                || (e.KeyChar == '.' && (sender as TextBox).Text.IndexOf('.') > -1)
            )
            {
                //e.Handled = true;
                double margin;
                double.TryParse((sender as TextBox).Text, out margin);
                if (margin >= 0 && margin <= 99.99)
                {
                    e.Handled = true;
                }
                else
                {
                    e.Handled = false;
                }
            }
        }
        catch
        {
            e.Handled = false;
        }
    }

如何只允许输入 0-99.99 之间的数字

为什么不使用 NumericUpDown 控件,并将 DecimalPlaces 属性设置为 2。

无需像在文本框上那样添加任何其他编码。

为什么

使用'&&e.KeyChar!='.,因为这样做不接受'..只是删除它,因为你也使用了(发件人作为文本框)。Text.IndexOf('.')> -1 这只接受整个文本字段中的一个 '.,因此 Right if 语句将是。

 if (   ! char.IsControl(e.KeyChar)
                && ! char.IsDigit(e.KeyChar)
                || (e.KeyChar == '.' && (sender as TextBox).Text.IndexOf('.') > -1)
            )
    {
//Your Code
}