如何:为 Windows 窗体全球化设置区域性和用户界面的区域性
Visual Basic 或 Visual C# 应用程序的两个区域性值决定了为应用程序加载哪些资源以及如何设置像货币、数字和日期这样的信息的格式。 加载的资源由 UI 区域性设置确定,而格式设置选项由区域性设置确定。 应用程序首先将在以下位置查找区域性值:CurrentCulture 和 CurrentUICulture 属性。 可按下面的过程所示在代码中设置这些值。
CurrentCulture 属性的默认值是操作系统的用户区域设置,它在**“区域选项”**控制面板中设置。 CurrentUICulture 属性的默认值是操作系统的用户界面 (UI) 语言,即您的操作系统用户界面所使用的语言。 在 Windows 2000 和 Windows XP MultiLanguage Edition 上,CurrentUICulture 默认为当前用户 UI 语言设置。
在一些情况下,您可能要根据操作系统或用户的区域性设置更改大部分应用程序,但保留数字或日期不更改。 您可以用区域性特定类通过固定区域性设置信息的格式,固定区域性与英语语言相关联,但没有特定的区域。 有关这些类的更多信息,请参见 Formatting for Different Cultures 和 System.Globalization。 有关固定区域性的更多信息,请参见 InvariantCulture。 有关可能有的区域性设置的信息,请参见 CultureInfo。
设置适合于特定区域性的格式设置选项
如果要重写用户或操作系统的设置,可以设置 CurrentCulture 和 CurrentUICulture 属性。
通常,您想要指定一个区域性,以便应用程序用户界面的每一部分都适合于该区域性。 因此,您必须在调用 InitializeComponent 方法之前设置该区域性。
' Put the Imports statements at the beginning of the code module Imports System.Threading Imports System.Globalization ' Put the following code before InitializeComponent() ' Sets the culture to French (France) Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR") ' Sets the UI culture to French (France) Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR")
// Put the using statements at the beginning of the code module using System.Threading; using System.Globalization; // Put the following code before InitializeComponent() // Sets the culture to French (France) Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR"); // Sets the UI culture to French (France) Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR");
提示
区域性值必须始终是特定区域性的(如“fr-FR”),而不是非特定区域性的(如“fr”)。 这样做的原因在于非特定区域性(例如“fr”)可以应用于所有讲法语的区域性,但在法国、比利时和魁北克(加拿大)使用不同的货币。
对于无论 CurrentCulture 属性的值如何设置都应不更改显示的任何字符串,用固定区域性调用格式设置方法。
Dim MyInt As Integer = 100 Dim MyString As String = MyInt.ToString("C", CultureInfo.InvariantCulture) MessageBox.Show(MyString)
int MyInt = 100; string MyString = MyInt.ToString("C", CultureInfo.InvariantCulture); MessageBox.Show(MyString);