问题解决了,
private mycollection as new collection
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
GetChildCtrl(Me)
Dim rm As Resources.ResourceManager
rm = New Resources.ResourceManager("test1.resource3", Me.GetType().Assembly)
'Label1.Text = rm.GetString("物料号:") '改变 label内容到英文
For i As Int16 = 1 To MyCollections.Count Dim str As String = Trim(CStr(CType(MyCollections.Item(i), Control).Text))
CType(MyCollections.Item(i), Control).Text = rm.GetString(str)
Next
End Sub
Private Sub GetChildCtrl(ByVal ParentCtrl As Control)
Dim ctrlC As Control
For Each ctrlC In ParentCtrl.Controls
MyCollections.Add(ctrlC) '加入集合
'如果有容器
If (TypeOf ctrlC Is Panel) OrElse _
(TypeOf ctrlC Is GroupBox) OrElse _
(TypeOf ctrlC Is ToolBar) Then
GetChildCtrl(ctrlC) '自身调用
End If
Next
End Sub
因为我要通过判断控件的名字改变他的语言,
所以我把Dim str As String = Trim(CStr(CType(MyCollections.Item(i), Control).Text)) 后面的text改成了name
就实现了,不过只是一个小例子
现在的问题就是如何对所有的窗体实现这个功能!
[Quote=引用 12 楼 LYDF4151 的回复:]
'定义一个窗体变量
private mycollection as new collection
[/Quote]
collection具体定义的是什么啊?
For i As Int16 = 1 To MyCollections.Count
Dim str As String = Trim(CStr(CType(MyCollections.Item(i), Control).Text))
CType(MyCollections.Item(i), Control).Text = rm.GetString(str)
Next
不是很清楚这个for循环到底在做什么!
在resx文件的中所有东西都是通过这个for循环改变的语言么?
[Quote=引用 5 楼 LYDF4151 的回复:]
Public Sub setUICulture(Optional ByVal Culture As String = "")
If Culture = "" Then Exit Sub
Select Case Culture
Case "E" : Culture = "en"
Case "S" : Culture = "zh-CHS"
Case "T" : Culture = "zh-CHT"
End Select
…
[/Quote]
CType(MyCollections.Item(i), Control).Text = rm.GetString(str)