c# - 限制文本框中允许的字符(输入金额)

标签 c# winforms textbox currency restrict

所以我有一个小计文本框,其中可以输入金额$ 546.75。现在,我要确保仅数字,一个小数点,一个美元符号和逗号每3个位(100,000,000)才允许使用。这可能吗?也许不是逗号,但至少是数字,小数和美元符号。

最佳答案

我认为您使用的是WinForms,而不是WPF。如果是这种情况,则可以使用System.Windows.Forms.ErrorProvider(可以将一个从工具箱拖放到窗体中)和正则表达式进行验证。

警告:下面的正则表达式模式字符串可能无法完全满足您的要求,但希望可以传达此想法。

一些匹配示例...“ $ 4,000.00”,“-$ 4000.00”,“-$ 400.00”

    private void textBox1_Validating(object sender, CancelEventArgs e)
    {
        string error = null;
        string pattern = @"^\$?\-?([1-9]{1}[0-9]{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\-?\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\(\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))\)$";

        if (!Regex.IsMatch(textBox1.Text, pattern))
        {
            error = "Please enter a US currency value.";
            e.Cancel = true;
        }
        errorProvider1.SetError((Control)sender, error);
    }

关于c# - 限制文本框中允许的字符(输入金额),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7301447/

相关文章:

WPF TextBox Inside ViewBox 在调整大小时丢失光标

c# - MSBUILD 如何调用 CSC.exe?

c# - 使用 SQL Server 数据库中的数据在文本框中自动完成

c# - 在 DataGridView 中使用 +(加号)和 -(减号)键盘键作为递增器和递减器

c# - 来自模态对话框的模态对话框 - 当第二个关闭时都关闭 - 为什么?

javascript - 关于 Javascript 中的文本更改

javascript - 在文本框中自动填充逗号和小数

c# - 在 Visual Studio Professional 中安装 Xamarin

c# - 编辑可变长度的字符串

c# - 消息框按钮上的事件处理程序