2010-10-05 4 views
2

Я пытаюсь создать NumberFormat, который не будет использовать группы вообще.CultureInfo.NumberFormat Скрыть Comma

Я хотел бы, чтобы все номера отображались с запятыми.

Пример:

  • 1999 вместо 1999
  • 2000000 вместо 2000000
  • и т.д ...

К сожалению, я использую контроль третьей партии, которая является NumericEditor и он применяет параметр CultureInfo для отображения запятых. Поэтому мне нужно создать экземпляр CultureInfo, который вообще не использует группировку.

Я попытался это:

int[] groupSize = {0}; 
CultureInfo culture = new CultureInfo("en-US"); 
culture.NumberFormat.NumberGroupSizes = groupSize; 

Также ...

CultureInfo culture = new CultureInfo("en-US"); 
culture.NumberFormat.NumberGroupSeparator = String.Empty; // Throws and exception with the 3rd party control 

Ближайший я получил это ...

CultureInfo culture = new CultureInfo("en-US"); 
culture.NumberFormat.NumberGroupSeparator = " "; 

Мне не нравится это решение вообще, потому что вместо запятой его пробел и это определенно выглядит странно.

Любые идеи?

+0

Не опубликовать трассировку стека исключения было плохой идеей. –

+0

@Ben f. почему бы вам не поместить свой комментарий в форму ответа, и я приму его, потому что он правильный. – Gabe

ответ

0

Рассмотрите возможность внедрения custom formatter.

Вы можете назначить свой собственный формат поставщик, как это:

CultureInfo.CurrentCulture.NumberFormat = new MyCustomFormatter(); 

Это мог бы работать, если они (разработчики третьего управления партией) не выполнили какое-то «волшебства».

+0

Запечатано сейчас, по крайней мере. –

1

Какой контроль над третьей стороной вы используете, и попробовали ли вы отразить (используя что-то вроде .NET Reflector), чтобы увидеть, как они используют класс CultureInfo, потому что в обычном старом C# -коде установки NumberFormat.NumberGroupSize = new int [] {0}; а также NumberFormat.NumberGroupSeperator = String.Empty ;. Кажется, что сторонний элемент управления может использовать свойства CultureInfo нестандартным образом.