使用变量字符串值引用数组名称

时间:2013-06-14 00:49:43

标签: vb.net

我使用的是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

1 个答案:

答案 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有点生疏)