С# удваивает отображение запятой вместо периода
У меня почти такая же проблема, как у парня в этой теме:
Преобразовать Float с периодом вместо запятой?
Итак, мой
double x = 234.4;
string y = x.ToString();
Я получаю y == "234,4"
;
Еще хуже... Double.Parse("234.4")
генерирует исключение.
Я написал много кода, прежде чем меня попросили использовать период вместо запятой, поэтому я предпочел бы иметь некоторый способ изменить мою CultureInfo на глобальном уровне.
Есть ли какие-то настройки в проектах, которые я могу сделать?
Я пробовал:
Application.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
Они вроде как работают. Они работают для большей части приложения, но все элементы управления, которые находятся на вкладках моего TabControl, все еще хотят использовать мои компьютеры Localized CultureInfo.
Любые идеи о том, как решить эту проблему?
Ответы
Ответ 1
Благодаря комментарию Флорина Сабаса я нашел решение, которое должно было разместить
Application.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US");
в Main() перед тем, как я создал свою форму.
Теперь мне не придется менять все мои .ToString() и Double.Parse():-) Yey!
Ответ 2
Вы можете попробовать использовать
double.Parse("...", CultureInfo.InvariantCulture)
и
x.ToString(CultureInfo.InvariantCulture)
в частях программы, что вы положительны, вам нужно иметь десятичный период вместо запятой или других региональных зависимых от десятичных разделителей.
Надеюсь, что это поможет.
Ответ 3
Попробуйте это решение: http://www.codeproject.com/KB/cs/Change_App_Culture.aspx