所以我有一个小计文本框,其中可以输入金额$ 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/