如何将文本框设置为只允许数字,一(1)个逗号,并在开头加一个短划线(表示负数)

本文关键字:开头 一个 表示 许数字 数字 文本 设置 | 更新日期: 2024-10-18 06:20:57

这是一个与通常的"我只想在文本框中输入数字"不同的框

我发现需要使用负数,我宁愿把它们放在文本框中。

到目前为止,我们可以使用以下代码轻松设置小数

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

把它挂在设计师想要的盒子上this.textBoxXX.KeyPress+=新建System.Windows.Forms.KeyPressEventHandler(this.textBox_KeyPress_1);

到目前为止还不错,但是,如果我需要添加一个"-",并且只允许在代码的开头添加它呢?有什么提示吗?

如何将文本框设置为只允许数字,一(1)个逗号,并在开头加一个短划线(表示负数)

您可以尝试像这样的正则表达式

^[0-9]([.,][0-9]{1,3})?$

^-?'d*'.?'d*

以下是验证方法的示例

private void ValidateText(object sender, EventArgs e)
{
    TextBox txtBox = sender as TextBox;
    String strpattern = @"^-?'d*'.?'d*"; //Pattern is Ok
    Regex regex = new Regex(strpattern);
    if (!regex.Match(txtBox.Text).Success)
    {
        // passed
    }
}

将您的文本框更改为具有Mask(类似于#99990.999)的MaskedTextBox怎么样?

它允许您输入正小数和负小数,长度和精度由掩码中9的数量决定。

这里,9是可选数字,0是强制数字,.是区域性适当的十进制占位符,#是数字、空格或+-

请参见遮罩元素定义以供参考。