我有一段代码可以查看以下内容
public Test As Dictionary(Of String, String())
带入哪个
tester = New Dictionary(Of String, String())
tester.add("Key_EN", {"Option 1_EN", "Option 2_EN", "Option 3_EN"})
tester.add("Key_FR", {"Option 1_FR", "Option 2_FR", "Option 3_FR"})
tester.add("Key_DE", {"Option 1_DE", "Option 2_DE", "Option 3_DE"})
然后有一个组合框,它会查看以下内容
dim Language as string
Language = "_EN" ' note this is done by a drop down combo box to select _EN or _FR etc.
cboTestBox.items.AddRange(tester("Key" & Language))
我需要做的是查看答案所在的索引位置并将其转换回Key_EN。
因此,例如选择了_DE,然后将显示“选项1_DE”,“选项2_DE”,“选项3_DE”的选项。如果他们选择了Option 3_DE,那么我需要能够将其转换为Option 3_EN。
非常感谢 Maudise
答案 0 :(得分:1)
你无法真正了解字典条目的索引,即使你做了,也不会对你有好处,因为你不能用它来访问密钥或值(我花了很多钱)时间试图解决这个问题无济于事。)
最简单的选择是构建反向查找字典,将组合键值映射回顶级键,假设组合值都是唯一的:
Dim oReverseLookup As New Dictionary(Of String, String)
For Each sKey As String In Tester.Keys
For Each sValue As String In Tester(sKey)
oReverseLookup.Add(sValue, sKey)
Next
Next
然后,当您选择了组合值时,您可以恢复原始密钥:
Dim sSelectedComboValue As String
sSelectedComboValue = "Option 3_DE"
If oReverseLookup.ContainsKey(sSelectedComboValue) Then
' This will print Key_DE
Debug.Print("Master Key Value " & oReverseLookup(sSelectedComboValue))
End If
答案 1 :(得分:0)
您可以从组合框中获取值并解析字符串。您知道它将在您要更改的部分之前包含_
。因此,只需处理字符串以查找_
之前的数值,然后将其插入另一个字符串Option X_EN
,方法是将其替换为X
,或者将其与Option
和{{1}连接起来}}
但是你要做的事情似乎是一种非常人为的方式来做这件事......