2015-07-21 30 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)); 
相關問題