代码之家  ›  专栏  ›  技术社区  ›  Smiley

文本框验证-C#

  •  3
  • Smiley  · 技术社区  · 15 年前

    我的C#应用程序的文本框验证非常困难。问题是,所说的文本框应该只接受十进制值。所以它的意思是,除了“.”符号之外,不应该有字母或任何其他符号。字母过滤器,我能处理。但是,我不知道如何过滤textbox应该接受的“.”的数量。如果有人知道怎么做,请给我一个主意。

    5 回复  |  直到 15 年前
        1
  •  3
  •   Luiscencio    15 年前

    只修改了一个小数点

        private void txtType_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Back || (e.KeyChar == (char)'.') && !(sender as TextBox).Text.Contains("."))
            {
                return;
            }
            decimal isNumber = 0;
            e.Handled = !decimal.TryParse(e.KeyChar.ToString(), out isNumber);
        }
    
        2
  •  4
  •   Anthony Pegram    15 年前
    decimal value;
    bool isValid = decimal.TryParse(textBox.Text, out value);
    
    if (!isValid)
    {
        throw new ArgumentException("Input must be a decimal value");
    }
    
        3
  •  1
  •   code4life    15 年前

    使用正则表达式验证:

    ^([0-9]*|\d*\.\d{1}?\d*)$
    

    http://regexlib.com/Search.aspx?k=decimal&c=-1&m=-1&ps=20

        4
  •  1
  •   Adam Houldsworth    15 年前

    只是想一想:如果你正在监视小数点,只需在你的控件中保留一个bool标志,表示“我已经有一个点了”;后续点无效。

    或者,在检查小数位时,可以使用 Contains :

    if (textbox.Text.Contains("."))

    此外,请查看MSDN(NumericTextBox)上提供的此示例:

    http://msdn.microsoft.com/en-us/library/ms229644(VS.80).aspx

        5
  •  0
  •   Steven Evers    15 年前

    改用MaskedTextBox,并将掩码设置为只接受小数。