如何在VB.NET中创建列表对象列表?

时间:2014-08-12 20:47:37

标签: vb.net list controls

嗨,我知道这可能听起来有点奇怪,但我想要一个包含其他控件列表的主列表。这是我到目前为止所拥有的。

'Create master list of control lists. Each member of this list will be a list containing one rows worth of controls

Dim masterList As New List(Of List(Of Control))
Dim rowList As New List(Of Control)

For Each Control As Control In flpExceptionControls.Controls

    rowList.Add(Control)

    If flpExceptionControls.GetFlowBreak(Control) = True Then
        masterList.Add(rowList)
        rowList.Clear()
    End If

Next

For Each row As List(Of Control) In masterList

    MsgBox(row.Count.ToString)

Next

消息框显示每个列表的计数都为0,但我知道它是将所有控件添加到这些对象,因为它在我单步执行代码时显示它。我猜测我只是没有正确访问主列表中包含的列表对象。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:2)

你的问题在这里:

If flpExceptionControls.GetFlowBreak(Control) = True Then
   masterList.Add(rowList)
   rowList.Clear()
End If

您正在清除相同列表的内容,然后您要添加一些新项目,然后再次清除,并将相同参考添加到主列表。实质上; masterList中的所有项目都是相同的空列表。

您需要为每个子列表创建一个新的子列表。不要清除任何列表。

Dim rowList As New List(Of Control)
For Each Control As Control In flpExceptionControls.Controls
    rowList.Add(Control)
    If flpExceptionControls.GetFlowBreak(Control) = True Then
        masterList.Add(rowList)
        rowList = New List(Of Control)
    End If
Next