我正在使用此代码在带有逗号分隔符和点的文本框中键入货币金额。虽然键入数字应该显示为这种格式(1,258,891.50)。我的代码正在工作,我无法输入点数。它仅接受全数。以下是我的代码......
if (textBox5.Text == "")
return;
int n = textBox5.SelectionStart;
decimal text = Convert.ToDecimal(textBox5.Text);
textBox5.Text = String.Format("{0:#,###0}", text);
textBox5.SelectionStart = n + 1;
答案 0 :(得分:3)
如果您的CurrentCulture
已经 ,
为NumberGroupSeparator
,.
为NumberDecimalSeparator
,则可以使用{{ 3}}作为N2
喜欢;
textBox5.Text = text.ToString("N2");
如果不是,您可以The ("N"
) format specifier CurrentCulture
{},将这些值设置为您的属性,并将 文化作为ToString
方法中的第二个参数
var clone = (CultureInfo)CultureInfo.CurrentCulture.Clone();
clone.NumberFormat.NumberGroupSeparator = ",";
clone.NumberFormat.NumberDecimalSeparator = ".";
textBox5.Text = text.ToString("N2", clone); // 1,258,891.50
答案 1 :(得分:0)
您的字符串格式"{0:#,###0}"
未指定任何小数位,因此它正在转换它而没有任何小数位。 (最后0
实际上什么都不做。)
请改为尝试:
textBox5.Text = String.Format("{0:#,###.##}", text);
如果由于某种原因你真的想在结尾强制0
,请试试这个:
textBox5.Text = String.Format("{0:#,###.#\\0}", text);
答案 2 :(得分:0)
textBox5.Text = string.Format("{0:#,##0.00}", double.Parse(textBox5.Text));