2009-01-27 91 views
4

我試圖確保從TextBox派生的文本始終格式化爲貨幣。string.Format「C」(currency)正在返回字符串「C」而不是格式化文本

我已經重寫了像這樣的Text屬性。

public override string Text 
    { 
     get 
     { 
      return base.Text; 
     } 
     set 
     {     
      double tempDollarAmount = 0; 
      string tempVal = value.Replace("$", "").Replace(",",""); 
      if (double.TryParse(tempVal, out tempDollarAmount)) 
      { 
       base.Text = string.Format("C", tempDollarAmount); 
      } 
      else 
      {     
       base.Text = "$0.00"; 
      }     
     } 
    } 

結果:

  • 如果我傳遞值 「文本」 (AmountControl.Text = 「文本」),我的測試頁 在控制的 文本設置爲「 $ 0.00「,如預期。
  • 如果我通過了價值7 (AmountControl.Text =「7」),我 希望看到「$ 7.00」,但我的測試頁上的控件的文本 設置 爲「C」。

我認爲我錯過了這裏很簡單的東西。這是關於財產的東西嗎?或者我錯誤地使用了字符串格式方法?

回答

13

而不是 「C」 放 「{0:C}」

更多字符串格式化的問題,去here

+0

感謝。我將其標記爲答案,因爲你是第一個。感謝您的鏈接。 – NetHawk 2009-01-27 16:27:55

1

需要 「{0:C}」

4

您還可以使用tempDollarAmount.ToString( 「C」)。

+0

謝謝,喬。我很高興看到實際使用「C」格式字符串的方式。 – NetHawk 2009-01-27 16:29:43

+0

我個人認爲這是一個更好的方法,任何確認哪個更有效率? – AdamMcquiff 2015-11-10 21:26:53

1

它應該是 「{0:C}」

1

是的,它應該是:

base.Text = string.Format("{0:C}", tempDollarAmount); 
1

它應該是:

base.Text = string.Format("{0:C}", tempDollarAmount); 

請不要使用雙至代表貨幣,用小數代替。

-1

它應該是:

Console.WriteLine("The value 99999 in various Format"); 
String s = "$"; 
String s1=s.Replace(s,"RS"); 
String s2 = String.Format("{0:c}", s1); 
String s3="1000"; 
Console.WriteLine(s2 + s3); 
相關問題