С# удваивает отображение запятой вместо периода

У меня почти такая же проблема, как у парня в этой теме:

Преобразовать 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)

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

Надеюсь, что это поможет.