ChangeCulture:C#Winform不支持​​文化名称

时间:2017-03-28 11:55:03

标签: c# .net vb.net winforms

我在VB.net中使用Target Framework 3.5开发了一个Windows窗体应用程序。应用程序在Windows 7,8,8.1,10中运行良好。但在Windows XP中,它显示错误:

  

文化名称' en-in'不支持

我检查了代码,发现导致错误的行是:

My.Application.ChangeCulture("en-IN")

当我尝试删除此行时,许多表单和报告都显示错误或错误信息。所以我无法删除这一行。

有没有办法在Windows中安装或加载此文化?

Culture Error

1 个答案:

答案 0 :(得分:1)

en-IN不是已知的文化代码。

您可以查看所有现有代码in this list

您可以使用CultureAndRegionInfoBuilder创建自定义文化,但这是非常不推荐的。

// Create a new Culture, with the name you desire
CultureAndRegionInfoBuilder cib = new CultureAndRegionInfoBuilder("en-IN", CultureAndRegionModifiers.None);

// Load all defaults from en-US
CultureInfo ci = new CultureInfo("en-US");
cib.LoadDataFromCultureInfo(ci);

// Populate the new CultureAndRegionInfoBuilder object with region information.
RegionInfo ri = new RegionInfo("US");
cib.LoadDataFromRegionInfo(ri);

// Now you can make changes, or finish.
// Changes can be currency, RegionName, etc.

// Finish
cib.Register();

this article解释了如何做到这一点。

或者您可以将自定义文化设置为:

Dim customCulture As Globalization.CultureInfo = New Globalization.CultureInfo("en-US")
customCulture.DateTimeFormat.ShortDatePattern = "dd-MMM-yyyy"
customCulture.DateTimeFormat.LongDatePattern = "dd-MMM-yyyy HH:mm:ss" 
customCulture.DateTimeFormat.ShortTimePattern = "HH:mm:ss"
customCulture.DateTimeFormat.LongTimePattern = "HH:mm:ss"
System.Threading.Thread.CurrentThread.CurrentCulture = customCulture
System.Threading.Thread.CurrentThread.CurrentUICulture = customCulture