C# 修改当前区域性?
因为在任何地方都需要这样做!问题是做C# 修改当前区域性?,c#,.net,C#,.net,因为在任何地方都需要这样做!问题是做newcultureinfo(“en-US”)忽略所有其他计算机特定的设置。。。 有没有办法复制当前区域性? 我试图修改currentculture,但出现只读错误…这是怎么回事: CultureInfo-culture=CultureInfo.CurrentCulture只需更改一行: CultureInfo culture = new CultureInfo("en-US"); culture.DateTimeFormat.DateSe
newcultureinfo(“en-US”)代码>忽略所有其他计算机特定的设置。。。
有没有办法复制当前区域性?
我试图修改currentculture,但出现只读错误…这是怎么回事:
CultureInfo-culture=CultureInfo.CurrentCulture代码>只需更改一行:
CultureInfo culture = new CultureInfo("en-US");
culture.DateTimeFormat.DateSeparator = "/";
culture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
//dekadikoi arithmoi
culture.NumberFormat.NumberDecimalSeparator = ".";
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
只需复印一份课程,并根据需要修改即可。如果确实需要更改线程本身的CultureInfo(而不是使用副本),则需要为代码授予安全权限,并将ControlThread
属性设置为true。(参见链接示例)
您可能希望使用:
CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.DateTimeFormat.DateSeparator = "/";
culture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
//dekadikoi arithmoi
culture.NumberFormat.NumberDecimalSeparator = ".";
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
相反。按照的解决方案,我建议从特定的区域性开始,因为CurrentCulture可以设置为任何值
CultureInfo culture = (CultureInfo)CultureInfo.CurrentUICulture.Clone();
然后将这一行添加到Program.cs
public static CultureInfo GetCustomCulture(string baseCulture = "en-ZA", char numberDecimalSeperator = '.', char listSeperator = ',') {
var culture = CultureInfo.GetCultureInfo(baseCulture).Clone();
culture.NumberFormat.NumberDecimalSeparator = numberDecimalSeperator + "";
culture.TextInfo.ListSeparator = listSeperator + "";
return culture;
}
无法修改CultureInfo.CurrentCulture属性,因为它是只读的,并且只有“Get”方法。当前区域性可以设置为任何值正是从当前区域性开始的原因。这将更改所有旨在保持与当前区域性相同的设置。@JonHanna,我注意到您正在解决方案中克隆区域性。这就是你指的吗?在我必须使用这种文化的情况下,这并不重要,因为我们不使用原始设置,但这仍然是一个很好的捕获。非常感谢。
public static CultureInfo GetCustomCulture(string baseCulture = "en-ZA", char numberDecimalSeperator = '.', char listSeperator = ',') {
var culture = CultureInfo.GetCultureInfo(baseCulture).Clone();
culture.NumberFormat.NumberDecimalSeparator = numberDecimalSeperator + "";
culture.TextInfo.ListSeparator = listSeperator + "";
return culture;
}
System.Globalization.CultureInfo.CurrentCulture = GetCustomCulture();