string.Format "C" (валюта) возвращает строку "C" вместо форматированного текста - PullRequest
4 голосов
/ 27 января 2009

Я пытаюсь убедиться, что текст в моем элементе управления, полученный из 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 ]

13 голосов
/ 27 января 2009

Вместо "C" поставить "{0: c}"

Для получения дополнительной информации о проблемах форматирования строки перейдите здесь

4 голосов
/ 27 января 2009

Вы также можете использовать tempDollarAmount.ToString ("C").

1 голос
/ 27 января 2009

Должно быть:

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

И, пожалуйста, не используйте double для представления валюты, вместо этого используйте десятичную.

1 голос
/ 27 января 2009

Да, должно быть:

base.Text = string.Format("{0:C}", tempDollarAmount);
1 голос
/ 27 января 2009

должно быть "{0: C}"

1 голос
/ 27 января 2009

Должен быть "{0: C}"

0 голосов
/ 10 января 2012

Должно быть:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...