2009-01-27 95 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); 
相关问题