我想在每组3位数字后加上“”。例如:当我输入123,456,789文本框将显示123,456,789,我得到它与以下代码:
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
if (!string.IsNullOrEmpty(textBox1.Text))
{
System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US");
decimal valueBefore = decimal.Parse(textBox1.Text, System.Globalization.NumberStyles.AllowThousands);
textBox1.Text = String.Format(culture, "{0:N0}", valueBefore);
textBox1.Select(textBox1.Text.Length, 0);
}
}
我想更具体地为这种格式。我想键入数字只为这个文本框和使用十进制格式(键入.之后)像123,456,789.00
和我尝试使用以下代码:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != '.')
{
e.Handled = true;
}
}
但它不起作用
2条答案
按热度按时间fxnxkyjh1#
您可以使用MSDN中定义的数字分组格式字符串,类似于以下内容(修改版本):
ct2axkht2#
http://msdn.microsoft.com/en-us/library/fzeeb5cd.aspx#Y600
在将值解析为decimal数据类型之后,只需使用
ToString
将decimal变量的值赋给textbox1.Text
,并向其传递一个格式参数。至于防止输入到文本框,我想肯定已经有一个模式了。
不管怎样,试试这个: