vb.net循环通过窗体上的控件和ListView循环通过列和行

时间:2015-03-04 18:43:52

标签: vb.net listview

我在UserForm中有3个ListView,还有一些其他项目。目前,当我展开UserForm时,ListViews和其他项目会随着UserForm大小的增加而扩展。

我正在做的事情还是通过遍历UserForm上的所有控件并检查它是否是ListView,然后在所有列中循环并根据需要进行扩展来扩展ListView中列的大小。

这是我目前所在的地方......

 For Each Ctrl As Control In Me.Controls
        If (TypeOf Ctrl Is ListView) Then
        ' This is where I'm not sure what to do!
        ' I want to loop through this Ctrl and view its columns
        End If
 Next

任何想法?

1 个答案:

答案 0 :(得分:1)

如果Plutonix'启用自动调整大小列的建议不起作用,然后阅读...

要访问该控件的属性,您需要先将其强制转换为ListView(到目前为止,您只需检查它是否 a ListView。然后,您可以遍历行和列:

 For Each Ctrl As Control In Me.Controls
        If TypeOf Ctrl Is ListView Then
            Dim currentListView As ListView = DirectCast(Ctrl, ListView)
            ' Loop over the rows (items) in the view
            For Each item As ListViewItem In currentListView.Items

            Next
        End If
 Next

您可能最终还需要一个递归控制搜索 - 您当前的循环只会查找Me的直接子控件。

另一个想法:只需在外部for循环中返回正确类型的控件:

For Each listViewControl As Control In Me.Controls.OfType(Of ListView)()
    For Each item As ListViewItem In listViewControl.Items

    Next
Next