gpt4 book ai didi

vb.net - Windows 窗体 - 如何按列名访问 ListView 的子项?

转载 作者:行者123 更新时间:2023-12-04 06:23:36 25 4
gpt4 key购买 nike

我试过这个,但它给了我“System.NullReferenceException”:

    For Each MyListViewItem As ListViewItem In MyListView.Items
MsgBox(MyListViewItem.SubItems("MyColumn").Text)
Next

这些代码行工作(奇怪!):
    For Each MyListViewItem As ListViewItem In MyListView.Items
MsgBox(MyListViewItem.SubItems(0).Text)
Next

但我需要按列名访问它们。

我发现这段代码给了我空白的子项目名称
For Each MyListViewItem As ListViewItem In MyListView.Items
MsgBox(MyListViewItem.SubItems(0).Name)
Next

请注意,我在设计时添加了列。 While 项目在运行时:
    While Reader.Read
Dim SubItems(2) As String
SubItems(0) = Reader("ItemForMyColumn")
SubItems(1) = Reader("ItemForSomeOtherColumn")
MyListView.Items.Add(New ListViewItem(SubItems))
End While

提前致谢!

最佳答案

尝试访问示例的 SubItems("MyColumn") 部分上的 Text 属性时,它很可能会引发空引用异常。

在尝试从中读取 Text 属性之前,您可以检查 MyListViewItem.SubItems("MyColumn") 是否不为 null。

也可能(根据您的编辑)您用来查找的名称与 SubItems 列表中的名称不匹配。

如果您使用索引打印您要查找的名称,您会看到什么?

修改后

我可能是错的,但看起来像使用这个 constructor对于 ListViewItem,它只会获取 Text 属性集。

我建议在 ListViewItem 的初始化代码中尝试这样的操作

(原谅我,我的VB真的很生疏,而且我没有打开VS)

While Reader.Read
Dim listViewItem As New ListViewItem()

Dim subItem1 As New ListViewSubItem()
subItem.Text = Reader("ItemForMyColumn")
subItem1.Name = "MyColumn"

//Do this as many times as you need

listViewItem.SubItems.Add( subItem1 )

MyListView.Items.Add( listViewItem )
End While

关于vb.net - Windows 窗体 - 如何按列名访问 ListView 的子项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6286981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com