Vb.net 如何在页面离开后保持语言更改

Vb.net 如何在页面离开后保持语言更改,vb.net,Vb.net,我有一个按钮可以把英语改成法语,反之亦然。但是,当我在应用程序中移动到一个新页面时,该按钮可以完美地工作,语言会在第一页上重置为原始语言。例如,我在主菜单上。我把它改成法语。一切都很好,但当我点击一个按钮打开一个子菜单时,新的页面就会打开,主菜单会变回英文。我需要一种方法来保持语言的变化,直到用户改变它回来 当我改变语言时,我尝试将当前文化设置为法语,但这并不能解决问题。我有.resx文件,其中包含我需要的所有单词(我就是这样翻译的) 您可以做的是存储引用当前选定语言的应用程序设置,然后在构造函

我有一个按钮可以把英语改成法语,反之亦然。但是,当我在应用程序中移动到一个新页面时,该按钮可以完美地工作,语言会在第一页上重置为原始语言。例如,我在主菜单上。我把它改成法语。一切都很好,但当我点击一个按钮打开一个子菜单时,新的页面就会打开,主菜单会变回英文。我需要一种方法来保持语言的变化,直到用户改变它回来

当我改变语言时,我尝试将当前文化设置为法语,但这并不能解决问题。我有.resx文件,其中包含我需要的所有单词(我就是这样翻译的)


您可以做的是存储引用当前选定语言的应用程序设置,然后在构造函数或加载事件中引用该设置。大致如下:

Sub New()
    InitializeComponent()

    Try
        Dim existingCulture As CultureInfo = New CultureInfo(My.Settings.SelectedCulture)
        Thread.CurrentThread.CurrentCulture = existingCulture
    Catch ex As Exception
         MessageBox.Show("There was an issue loading the existing culture. The language will be the default language.", "Error Loading Culture", MesssageBoxButtons.Ok, MessageBoxIcons.Warning)
    End Try
End Sub
以下是有关My.Settings的MSDN文章:


实际上,您需要创建一个名为SelectedCulture的字符串作为新的应用程序设置,并将其设置为默认区域性(例如“fr CA”)。然后在您的
btnChangeLanguage
单击事件中,您将在重置线程的当前区域性之前更新设置。

您可以做的是存储引用当前选定语言的应用程序设置,然后在构造函数或加载事件中引用该设置。大致如下:

Sub New()
    InitializeComponent()

    Try
        Dim existingCulture As CultureInfo = New CultureInfo(My.Settings.SelectedCulture)
        Thread.CurrentThread.CurrentCulture = existingCulture
    Catch ex As Exception
         MessageBox.Show("There was an issue loading the existing culture. The language will be the default language.", "Error Loading Culture", MesssageBoxButtons.Ok, MessageBoxIcons.Warning)
    End Try
End Sub
以下是有关My.Settings的MSDN文章:


实际上,您需要创建一个名为SelectedCulture的字符串作为新的应用程序设置,并将其设置为默认区域性(例如“fr CA”)。然后,在您的
btnChangeLanguage
单击事件中,您将在重置线程的当前区域性之前更新设置。

事实证明,我还有其他全局变量没有更改。我将这些添加到方法中,效果非常好。谢谢你的帮助

Private Sub btnChangeLanguage_Click(sender As Object, e As RoutedEventArgs) Handles btnChangeLanguage.Click
        Try
            If CurrentLanguageSelection = enumLanguage.English Then
                CurrentLanguageSelection = enumLanguage.French
                Dim newCulture As CultureInfo = New CultureInfo("fr-CA")
                Thread.CurrentThread.CurrentCulture = newCulture
                gCurrentStrLanguage = "FR"

            ElseIf CurrentLanguageSelection = enumLanguage.French Then
                CurrentLanguageSelection = enumLanguage.English
                Dim newCulture As CultureInfo = New CultureInfo("en-CA")
                Thread.CurrentThread.CurrentCulture = newCulture
                gCurrentStrLanguage = "EN"

            End If
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

事实证明,我只是有其他全局变量,我没有改变。我将这些添加到方法中,效果非常好。谢谢你的帮助

Private Sub btnChangeLanguage_Click(sender As Object, e As RoutedEventArgs) Handles btnChangeLanguage.Click
        Try
            If CurrentLanguageSelection = enumLanguage.English Then
                CurrentLanguageSelection = enumLanguage.French
                Dim newCulture As CultureInfo = New CultureInfo("fr-CA")
                Thread.CurrentThread.CurrentCulture = newCulture
                gCurrentStrLanguage = "FR"

            ElseIf CurrentLanguageSelection = enumLanguage.French Then
                CurrentLanguageSelection = enumLanguage.English
                Dim newCulture As CultureInfo = New CultureInfo("en-CA")
                Thread.CurrentThread.CurrentCulture = newCulture
                gCurrentStrLanguage = "EN"

            End If
        Catch ex As Exception
            Throw ex
        End Try
    End Sub