C#如何将文本框小数位限制为2?

时间:2017-09-20 01:06:44

标签: c# textbox decimal

我有这个文本框,其中小数位应该只有两个,它可以工作,但后来禁用后退空间

  try
        {
            if (string.IsNullOrWhiteSpace(textBox1.Text))
            {
                textBox2.Clear();
            }
            else
            {
                if (Convert.ToDouble(textBox1.Text) > Convert.ToDouble(grandTotal.Text))
                {
                    double change = Convert.ToDouble(textBox1.Text) - Convert.ToDouble(grandTotal.Text);
                    textBox2.Text = change.ToString("#,0.00");
                }
                else if (Convert.ToDouble(textBox1.Text) == Convert.ToDouble(grandTotal.Text))
                {
                    textBox2.Text = "0";
                }
                else
                {
                    textBox2.Clear();
                }
            }
        }
        catch(Exception)
        {

        }

2 个答案:

答案 0 :(得分:0)

您可以在文本框KeyPress事件处理程序上执行此操作:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == '.' && textBox1.Text.Contains('.'))
            e.Handled = true;
        if (char.IsNumber(e.KeyChar) || e.KeyChar == '.')
        {
            if (Regex.IsMatch(
             textBox1.Text,
             "^\\d*\\.\\d{2}$")) e.Handled = true;
        }
        else e.Handled = e.KeyChar != (char)Keys.Back;
    }

它的作用基本上是将小数位数限制为2,它还将小数点限制为1。但是退格应该仍然可以正常工作。

答案 1 :(得分:0)

此外,您还可以选择其他选项,而不是对所选控件进行编码(textBox1)。您可以创建可重复使用的自定义文本框控制器。这将指导您Decimal Textbox in Windows Forms