救急!!!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