4

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";
            }                
        }
    }

結果:

  • 値 "Text" (AmountControl.Text = "Text";) を渡すと、テスト ページのコントロールのテキストは期待どおり "$0.00" に設定されます。
  • 値 7 (AmountControl.Text = "7";) を渡すと、"$7.00" が表示されるはずですが、テスト ページのコントロールのテキストは "C" に設定されています。

ここで非常に単純なものが欠けていると思います。物件のことでしょうか?または、文字列形式の方法を間違って使用していますか?

4

7 に答える 7

13

「C」の代わりに「{0:c}」を入れてください

文字列のフォーマットに関するその他の問題については、こちらをご覧ください

于 2009-01-27T16:22:06.003 に答える
4

tempDollarAmount.ToString( "C")を使用することもできます。

于 2009-01-27T16:22:38.843 に答える
1

「{0:C}」である必要があります

于 2009-01-27T16:22:18.890 に答える
1

「{0:C}」である必要があります

于 2009-01-27T16:22:44.083 に答える
1

はい、次のようになります。

base.Text = string.Format("{0:C}", tempDollarAmount);
于 2009-01-27T16:22:57.983 に答える
1

そのはず:

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

また、通貨を表すためにdoubleを使用せず、代わりに10進数を使用してください。

于 2009-01-27T16:24:22.597 に答える
-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);
于 2012-01-10T13:34:04.360 に答える