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

时间:2015-01-05 04:43:25

标签: c# validation

如何限制用户在文本框中输入任何内容,而不是介于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;
        }
    }

2 个答案:

答案 0 :(得分:0)

为什么不在将DecimalPlaces属性设置为2的情况下使用NumericUpDown控件。

无需在文本框中添加任何其他编码。

答案 1 :(得分:0)

你为什么要使用`&amp;&amp; e.KeyChar!=&#39;。&#39;因为这样做不接受&#39;。&#39; .just删除这个因为你也使用过(发送者为TextBox).Text.IndexOf(&#39;。&#39;)&gt; -1这只接受一个&#39;。&#39;在整个文本字段中,所以Right if语句将是。

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