我使用的是Visual Basic Express 2010版。我有一个名为cboTester的组合框,一个名为cboOutput的输出组合框和一个名为'ListClass'的单独类
cboTester有3个选项,EN,FR和DE。
在列表类中,我有3个字符串数组;
Public Shared Tester_EN() {"Yes", "No"}
Public Shared Tester_FR() {"Maybe", "Kind of"}
Public Shared Tester_DE() {"No", "No way"}
有没有办法使用vb.net我可以使用cboTester的输入来确定如何填充cboOutput?
我认为这与下面详述的答案类似。请注意;这是自由类型的,不会从我可以查看的地方复制和粘贴!
private sub cboTester_SelectedIndexChanged()
if cboTester_SelectedItem = "EN" then
strTest = "EN"
else if cboTester_SelectedItem = "FR" then
strTest = "FR" ...
end if
ArrayName = "ListClass.Tester_" & strTest
cboOutput.items.addrange(ArrayName)
---编辑线下14/06/2013 2:45 GMT 看来我可以在这里提供更多信息。
我想这样做的原因是因为我有很多很多的数组,它们都是用Arrayname_Lang的描述设置的(例如Reasons_EN,Reasons_FR,Reasons_DE,House_EN,House_FR,House_DE)所以我想要能够将我的加载函数写为;
cboReasons.Items.AddRange("ListClass.reasons" & language)
而不是必须编写每个可能的变体
由于 Maudise
答案 0 :(得分:1)
我将您的三个Tester
变量设为一个Dictionary(Of String, String())
,其中包含“EN”,“FR”和“DE”键:
Public Shared Tester as Dictionary(Of String, String())
...
Tester = new Dictionary(Of String, String())
Tester.Add("EN", {"Yes", "No"});
Tester.Add("FR", {"Maybe", "Kind of"});
Tester.Add("DE", {"No", "No way"});
然后使用:
cboOutput.items.addrange(Tester(cboTester_SelectedItem)))
(对不起任何语法差异,我的VB.NET有点生疏)