string.Format“C”(货币)返回字符串“C”而不是格式化文本

时间:2009-01-27 16:19:32

标签: c# format

我正在尝试确保从TextBox派生的控件中的文本始终格式化为货币。

我已经像这样重写了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 =“Text”;),. 我的测试页面上的控件文本 按预期设置为“$ 0.00”。
  • 如果我传递值7 (AmountControl.Text =“7”;),我 期待看到“7.00美元”,但文字 我的测试页面上的控件设置 到“C”。

我认为我在这里缺少一些非常简单的东西。这是关于财产的吗?或者我是否错误地使用字符串格式方法?

7 个答案:

答案 0 :(得分:13)

而不是“C”放“{0:c}”

有关更多字符串格式问题,请转到here

答案 1 :(得分:4)

您也可以使用tempDollarAmount.ToString(“C”)。

答案 2 :(得分:1)

需要“{0:C}”

答案 3 :(得分:1)

它应该是“{0:C}”

答案 4 :(得分:1)

是的,它应该是:

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

答案 5 :(得分:1)

应该是:

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

请不要使用double来代表货币,而是使用小数。

答案 6 :(得分:-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);