我想创建本地化的应用程序,并希望实现一个语言切换器(例如特殊按钮)。我使用Visual Studio 2010 express(VB.NET)。
我用一个标签和一个按钮创建了简单的测试应用程序。我将表单的属性“Localizable”设置为“True”,并将编辑的组件文本设置为2种语言(默认为英语和俄语)。
我知道需要添加
Imports System.Threading.Thread
Imports System.Globalization
在Form1.vb的开头然后使用
Thread.CurrentThread.CurrentUICulture = New CultureInfo("ru")
启用俄语本地化。但是,如果我把这一行放入Button_Click事件,它不会改变语言。是否可以在按钮单击或组合框更改等事件之间切换语言?
先感谢您!
是的,您可以在Button Click事件或更改事件上实现本地化。您可以将文化设置为
Thread.CurrentThread.CurrentUICulture = New CultureInfo("ru-RU")
这些链接将帮助您:Globalizing and Localizing Windows Application,Walkthrough: Localizing Windows Forms,Localizing Applications
首先更改CurrentUICulture,然后强制将新文化的资源应用于所有控件。
这个代码示例循环通过Me.Controls
,但你也应该循环子容器(面板等)。
这样做会改变字符串,位置,大小等。
System.Threading.Thread.CurrentThread.CurrentUICulture = New CultureInfo("es-ES")
Dim res As ComponentResourceManager = New ComponentResourceManager(Me.GetType)
For Each aControl As Control In Me.Controls
res.ApplyResources(aControl, aControl.Name)
Next
编辑:您还可以使用以下方法更改线程的默认文化:
CultureInfo.DefaultThreadCurrentCulture = New CultureInfo("es-ES")
这样,您在运行时创建的所有新表单都将使用此新的CultureInfo。