2015-07-21 52 views
1

我使用此代码在逗号分隔符和点中输入文本框中的货币数量。键入数字时应显示为这种格式(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

什么是“textBox5”?你在使用什么平台? – greenfeet

回答

3

如果您CurrentCulture已经,NumberGroupSeparator.作为NumberDecimalSeparator,你可以使用The ("N") format specifier作为N2等;

textBox5.Text = text.ToString("N2"); 

如果不是的话,你可以CloneCurrentCulture,这些值设置为你的属性和方法ToString使用文化作为第二个参数。

var clone = (CultureInfo)CultureInfo.CurrentCulture.Clone(); 
clone.NumberFormat.NumberGroupSeparator = ","; 
clone.NumberFormat.NumberDecimalSeparator = "."; 
textBox5.Text = text.ToString("N2", clone); // 1,258,891.50 
+0

它没有给出正确的顺序,而只输入逗号分隔符和点。 –

+0

@MohamedShakir你的意思是_correct order_究竟是什么意思?订单还是什么?你的'text'不是'1258891.50'作为'decimal'吗?你有没有尝试过我的第二个代码示例? –

+0

我已经尝试过你的第二个代码,bt它没有按顺序显示,这意味着如果我们键入一个数字,就像(1500)那样显示像这样的5100)。 –

0

你的字符串格式"{0:#,###0}"不指定任何小数,所以它转换它没有任何小数。 (另外,0末实际上什么都不做)

试试这个:

textBox5.Text = String.Format("{0:#,###.##}", text); 

如果由于某种原因,你真的要强制0末,试试这个:

textBox5.Text = String.Format("{0:#,###.#\\0}", text); 
+0

它也不工作 –

0
textBox5.Text = string.Format("{0:#,##0.00}", double.Parse(textBox5.Text));