Культура по умолчанию
Я использую.NET4
Я использую локализацию en-US и хочу, чтобы мое приложение работало только таким образом.
Некоторые из моих клиентов по программному обеспечению, тем не менее, из стран (например, в Норвегии), где десятичная точка представлена знаком ",".
Поэтому следующая строка выдает исключение для моего норвежского клиента:
double a = double.Parse("1.5");
Я прочитал, что могу изменить CurrentCulture следующим образом:
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Проблема в том, что я должен сделать это для каждого потока отдельно. Более того, я не совсем уверен, где я буду неявно разбирать double, поэтому мне придется делать это при каждом создании потока...
Я читал, что есть решение для.NET 4.5, изменив настройку DefaultThreadCurrentCulture
,
Кто-нибудь думает об общем решении для этого без обновления моей версии.NET Framework?
2 ответа
Я знаю, что вы ищете общее решение, но способ обойти эти проблемы заключается в том, чтобы проанализировать с помощью CultureInfo.InvariantCulture:
double a = double.Parse("1.5", CultureInfo.InvariantCulture);
Но будьте осторожны, это моя проблема, когда ваша строка содержит запятые и точки.
Проверьте ответы по следующей ссылке:
Я думаю, что понял вашу проблему, и это можно было бы сделать без обновления вашего.Net, я надеюсь, что это поможет, так как я делал программу, я сделал начальную настройку для моей программы, в которой я прошу, так что создайте диалог, который попросит пользователя для страны а затем вы добавляете ваш десятичный код в качестве регистра case.here:-
void AskForACountry()
{
frmEdit = new Form();
frmEdit.ShowIcon = false;
cmbxLang = new ComboBox();
frmEdit.Size = new Size(199, 113);
Button btnSetLang = new Button();
btnSetLang.Size = new Size(88, 23);
btnSetLang.Text = "Set Language";
btnSetLang.Location = new Point(40, 39);
cmbxLang.Location = new Point(28, 12);
cmbxLang.DropDownStyle = ComboBoxStyle.DropDownList;
String[] arrayCountry = { "Catalan - Spain", "Chinese - China", "Chinese - Hong Kong", "Chinese - Taiwan", "Danish - Denmark", "Dutch - Netherlands", "English - Australia", "English - Canada", "English - Great Britain", "English - US", "Finnish - Finland", "French - Canada", "French - France", "German - Germany", "Italian - Italy", "Japanese - Japan", "Korean - Korea", "Norwegian - Norway", "Polish - Poland", "Portuguese - Brazil", "Portuguese - Portugal", "Russian - Russia", "Spanish - Mexico", "Spanish - Spain", "Swedish - Sweden" };
cmbxLang.DataSource = arrayCountry.ToList();
btnSetLang.Click += new EventHandler(btnSetLang_Click);
frmEdit.Controls.Add(cmbxLang);
frmEdit.Controls.Add(btnSetLang);
MessageBox.Show("Please select a country that fits your computer's default language and dialect.", "Select A Country");
frmEdit.StartPosition = FormStartPosition.CenterScreen;
frmEdit.AcceptButton = btnSetLang;
frmEdit.ShowDialog();
}