是否可以创建具有不同类型的多维数组?

时间:2017-09-20 00:48:44

标签: vb.net object multidimensional-array

我有3个控件,它们由同一行上的标签,列表框和文本框组成。在另一条线上,我有3个不同的相同类型的控件,分别是标签,列表框和文本框。我想把它们放到像这样的三维数组中:

Dim multiArray() As Object = { {Lane1Label, ListBox1, TextBox1}, 
    {Lane2Label, ListBox2, TextBox2} }

但这不是让我这样做的。有办法吗?

2 个答案:

答案 0 :(得分:3)

创建一个类(甚至可能是自定义或用户控件)来包含每行控件:

Public Class ControlLine
    Public Property Lane As Label
    Public Property List As ListBox
    Public Property Text As TextBox
End Class

然后创建这些对象的单维数组(或者通常更好:List(Of ControlLine))并将您的项目放在这里:

Dim lines() As ControlLine = { 
   New ControlLine With { Lane = LaneLabel1, List = ListBox1, Text = TextBox1},
   New ControlLine With { Lane = LaneLabel2, List = ListBox2, Text = TextBox2}
}

这是更好,因为数组中的项目保持强类型,以便进行良好的编译时检查以及对intellisense等内容的IDE支持。 Visual Studio的最新版本也可以通过Tuples来实现。

同样,还要考虑将其进一步抽象为自定义或用户控件,您可以使用一个简单的构造函数调用创建整个集合,在表单上放置一个控件并使整个集合正确排列,甚至考虑< strong>数据绑定这些ControlLines到FlowLayoutPanel之类的容器,而不是自己管理所有控件和数组以及放置。

答案 1 :(得分:0)

这样做:

Dim multiArray(,) As Object = _
{ _
    {Lane1Label, ListBox1, TextBox1}, _
    {Lane2Label, ListBox2, TextBox2} _
}

请注意二维数组声明中的,