救急!!!vb.net中用户控件多国语言的问题?
vb.net中对于普通控件,比如Label控件,可以实现多国语言,对窗体的Language
切换,比如在“中文(简体)”中设置Label的text属性为“中文”,在“英文(
美国)”中设置为“English”,那么切换Language后会显示不同的text属性值。
但是在用户控件中,我包含有Label控件,并且我自己做了个属性对Label的
text进行设置,但是在使用用户控件的窗体,使用多国语言时,用户控件不会在
不同的语言显示不同内容,比如我在“英文(美国)”里设置text为“English”
这个时候Language切换到“中文(简体)”后,text也变成“English”了,问怎
么才能让用户控件支持多国语言?
[解决办法]
生成资源文件
[解决办法]
你自己设置属性,那么你自己就需要显式地去使用设置值去查找资源、替换为目标值,再设置给Text属性。
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