如何在VB.NET中点击按钮切换表单的语言?

问题描述 投票:3回答:2

我想创建本地化的应用程序,并希望实现一个语言切换器(例如特殊按钮)。我使用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事件,它不会改变语言。是否可以在按钮单击或组合框更改等事件之间切换语言?

先感谢您!

vb.net visual-studio-2010 localization
2个回答
2
投票

是的,您可以在Button Click事件或更改事件上实现本地化。您可以将文化设置为

Thread.CurrentThread.CurrentUICulture = New CultureInfo("ru-RU")

这些链接将帮助您:Globalizing and Localizing Windows ApplicationWalkthrough: Localizing Windows FormsLocalizing Applications


0
投票

这是一个可能的解决方法:https://social.msdn.microsoft.com/Forums/en-US/72f70870-0c0c-4eb1-886b-9db9917d080a/form-support-multilanguage-at-runtime-in-windows-based-application#8c775cc0-5e5e-4551-b5d1-52bb5c1663e8

首先更改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。

© www.soinside.com 2019 - 2024. All rights reserved.