限制文本框中允许的字符(输入金额)
本文关键字:字符 输入 金额 文本 | 更新日期: 2023-09-27 18:07:23
所以我有一个小计文本框,其中可以输入金额如$546.75。现在,我想确保只有数字,一个小数,一个美元符号和逗号只允许每3位(100,000,000)。这可能吗?也许不是逗号,但至少是数字、小数和美元符号。
为什么不把货币符号"$"放在textBox的外面(在textBox的前面创建一个标签),那么你就不必担心这个字符,而只担心数字。而且看起来更好(在我看来)。然后可以使用以下代码:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar != (Char)Keys.Back) //allow backspace (to delete)
{
e.Handled = !char.IsNumber(e.KeyChar);
}
}
所有的验证应该在KeyPress事件上手动执行。
这里描述了数值值的验证。您需要额外检查'$'符号和小数
我想你使用的是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);
}
有很多关于数字文本框的文章
数值文本框http://www.daniweb.com/software-development/csharp/threads/95153
http://www.codeproject.com/KB/vb/NumericTextBox.aspx我在我的项目中使用这个
http://www.codeproject.com/KB/edit/ValidatingTextBoxControls.aspx//tb -是文本框的名称
private void tb_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
char[] inputChar = e.Text.ToCharArray();
if (char.IsNumber(inputChar[0]))
{
e.Handled = false;
}
else
{
e.Handled = true;
}
//其他方法
if (char.IsDigit(inputChar[0]))
{
e.Handled = false;
}
else
{
e.Handled = true;
}
}
您尝试过Ajax控件吗?
http://www.aspsnippets.com/Articles/ASPNet-AJAX-FilteredTextBoxExtender-Control-Example.aspx简单。:)