文本框格式不接受用点键入数字

时间:2015-07-21 07:40:59

标签: c#

我正在使用此代码在带有逗号分隔符和点的文本框中键入货币金额。虽然键入数字应该显示为这种格式(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;

3 个答案:

答案 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));