首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

救急vb.net中用户控件多国语言的有关问题

2013-01-01 
救急!!!vb.net中用户控件多国语言的问题?vb.net中对于普通控件,比如Label控件,可以实现多国语言,对窗体的L

救急!!!vb.net中用户控件多国语言的问题?
vb.net中对于普通控件,比如Label控件,可以实现多国语言,对窗体的Language

切换,比如在“中文(简体)”中设置Label的text属性为“中文”,在“英文(

美国)”中设置为“English”,那么切换Language后会显示不同的text属性值。 

    但是在用户控件中,我包含有Label控件,并且我自己做了个属性对Label的

text进行设置,但是在使用用户控件的窗体,使用多国语言时,用户控件不会在

不同的语言显示不同内容,比如我在“英文(美国)”里设置text为“English”

这个时候Language切换到“中文(简体)”后,text也变成“English”了,问怎

么才能让用户控件支持多国语言?
[解决办法]
生成资源文件
[解决办法]
你自己设置属性,那么你自己就需要显式地去使用设置值去查找资源、替换为目标值,再设置给Text属性。

引用:
生成资源文件


同意!


[解决办法]
当然是资源文件啦,当然你也可以用其他的 很简单 key="book" value="书" key="book" value="book"
key="book" value="本" 三种语言对应的Key都是Book 切换Language时 切换资源文件即可。
这是简单的页面呈现的多语言,还有多语言是 用户输入的多语言 业务多语言 
[解决办法]
窗体Language属性改变时,设置一个标志或引发一个事件,从而进行控件语言的切换,当然你必须事先准备好语言文件,可以是资源文件或文本文件等,文件类型看你自己的喜好了。
[解决办法]

Private Sub cmblanguage_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmblanguage.Click, cmblanguage.SelectedValueChanged
        If cmblanguage.SelectedIndex = -1 Then Exit Sub

        Select Case cmblanguage.SelectedIndex
            Case 0
                Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-US")

            Case 1
                Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh-CN")
        End Select

        ApplyResource(Me)

    End Sub
Public Sub ApplyResource(ByVal MyForm As Form)

        Dim res As System.ComponentModel.ComponentResourceManager = New ComponentResourceManager(MyForm.GetType)

        With MyForm
            For i = 0 To .Controls.Count - 1
                res.ApplyResources(.Controls(i), .Controls(i).Name)
                autoControlMultiLanguage(.Controls(i), MyForm)
            Next i
        End With

        res.ApplyResources(MyForm, "$this")
    End Sub

热点排行