Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Вывод числа в textbox с разделителем


Автор: Alfiere 10.3.2009, 17:34
Всем добрый вечер!  smile 

Есть у меня свой контрол, наследуемый от текстбокса. Его задача (с которой он справляется на ура) - позволять пользователю вводить в textbox только число определенного формата (использую регулярное выражение @"^\d*[,]?\d{0,2}$").

Но так же хотелось бы, чтобы пользователю отображалось число (хотя бы по потери фокуса с этого текстбокса) с разделителями. 

Пример:
Число 1234567,89 должно отображаться так: 1 234 567,89.

Пыталась на потерю фокуса сделать следующее:
Код

NumberFormatInfo nfi = new CultureInfo("en-US", false).NumberFormat;
nfi.NumberDecimalSeparator = " ";
nfi.CurrencyDecimalSeparator = ",";
decimal d = decimal.Parse(this.Text);
this.Text = d.ToString(nfi);


не работает =(

Может кто-нибудь решал подобную задачу? буду благодарна за помощь=)

Добавлено через 5 минут и 31 секунду
Не правильный код выложила. Пробовала так:
Код

NumberFormatInfo nfi = new CultureInfo("en-US", false).NumberFormat;
nfi.NumberGroupSeparator= " ";
nfi.CurrencyDecimalSeparator = ",";
decimal d = decimal.Parse(this.Text);
this.Text = d.ToString(nfi);


Не работает smile 

Автор: Alfiere 10.3.2009, 18:37
Поборола smile 

Заработало вот так:

на потерю фокуса выполняется следующее:

Код

this.Text= Microsoft.VisualBasic.Strings.FormatNumber(this.Text, -1, Microsoft.VisualBasic.TriState.True, Microsoft.VisualBasic.TriState.True, Microsoft.VisualBasic.TriState.True);



Хотя я так и не поняла... почему в С# нету функции FormatNumber? Или я ее не нашла?smile или они про нее забыли?   smile 

Автор: -Mikle- 12.3.2009, 00:00
Alfiere, можно еще так:
this.Text = decimal.Parse(this.Text).ToString("### ### ### ###");

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)