如何引用不同标签页上的列表视图中的数据?

how to reference to data from listviews on different tabpages?

我在一个选项卡控件中有几个选项卡页,每个选项卡只包含一个列表视图。我需要从所选选项卡的列表视图中获取 data/items。我的问题是,我无法引用列表视图。我试过了

exportpath = TabControl1.SelectedTab.Controls(0).

但是此时IDE不知道有listview,所以我不能选择

.items(i).tostring

此时创建标签页和列表视图的变量已经被覆盖。您认为我应该选择另一种方法来创建选项卡和列表视图(也许创建一个列表(列表视图)来记住这些内容),还是有接近我的示例的方法尝试?

此致,简

dim lst as listview = TabControl1.SelectedTab.Controls(0)
dim exportpath as string = lst.items(i).tostring

?那行得通吗? 编辑:假设列表视图是您在那里拥有的唯一控件。

我不会加载基于集合中索引的控件。

我假设既然您正在尝试动态访问它们,那么您也在动态创建它们?

添加一个可以在控件上引用的标记或使用相同的命名约定。 listview 的名称,即 MainListView#,其中 # 只是递增,或者只是将 listview 上的所有标签分配给一致的东西。

然后使用辅助函数循环遍历该选项卡的控件集合并找到实际控件。

然后遍历控件集合并找到您想要定位的控件。

    Dim lstView As ListView = ControlNameStartsWith(TabControl1.SelectedTab, "MainListView")

    lstView.Items.Add("test")

函数:

Function ControlByTag(ByRef parent As Control, ByVal tag As String)

    For Each Cntl As Control In parent.Controls
            If Cntl.Tag.ToString.ToLower = tag.ToLower Then
                Return Cntl
                Exit For
            End If
    Next

    Return Nothing

End Function

Function ControlNameStartsWith(ByRef parent As Control, ByVal likePhrase As String)

    For Each Cntl As Control In parent.Controls

        If Cntl.Name.ToLower.StartsWith(likePhrase.ToLower) Then
            Return Cntl
            Exit For
        End If

    Next

    Return Nothing

End Function

Function ControlByName(ByRef parent As Control, ByVal name As String)

    For Each Cntl As Control In parent.Controls

        If Cntl.Name.ToLower = name.ToLower Then

            Return Cntl
            Exit For
        End If

    Next

    Return Nothing

End Function