.net Listview子项为空

.net Listview子项为空,.net,vb.net,.net,Vb.net,这就是我填充列表视图的方式 With ListView1 .View = View.Details .Columns.Add("Articles", "Articles") .Columns.Add("Prix", "Prix") .Columns.Add("Quantité", "Quantité") .Columns.Add("Total", "Total") End With

这就是我填充列表视图的方式

        With ListView1
        .View = View.Details
        .Columns.Add("Articles", "Articles")
        .Columns.Add("Prix", "Prix")
        .Columns.Add("Quantité", "Quantité")
        .Columns.Add("Total", "Total")
    End With

    'populate "inputs"...
    For Each item As Container In sList
        Dim curEntry As New ListViewItem(New String() {item.sItemName.ToString(), item.sPrice.ToString("C2"), item.iNumber.ToString(), item.sPriceTot.ToString("C2")})
        ListView1.Items.Add(curEntry)
    Next
我尝试使用获取selectedRow的子项

ListView1.SelectedItems(0).SubItems("Articles").Text
但是我得到了一个null异常,因为子项为null,所以调用text会给我这个错误,但是为什么它为null呢?它不应该为null


我需要知道为什么为空,以及我如何解决这个问题,谢谢你可以依赖指数;示例代码(第一行和第一列):

或者为行指定一个
名称
,并使用此名称引用该行:

 Dim curEntry As New ListViewItem(New String() {item.sItemName.ToString(), item.sPrice.ToString("C2"), item.iNumber.ToString(), item.sPriceTot.ToString("C2")})
 curEntry.Name = "Row 1" 
 ListView1.Items.Add(curEntry)

 Dim val11 As String = ListView1.Items("Row 1").SubItems(0).Text
更新:

如果您通过自己的方法添加子项(
子项。添加
),并为每个子项指定一个
名称,则也可以通过其
名称
(列)引用子项

 Dim curEntry As New ListViewItem(New String() {item.sItemName.ToString(), item.sPrice.ToString("C2"), item.iNumber.ToString(), item.sPriceTot.ToString("C2")})
 curEntry.SubItems.Add("otherColumn").Name = "5th column"
 curEntry.Name = "Row 1" 
 ListView1.Items.Add(curEntry)

 Dim val15 As String = ListView1.Items("Row 1").SubItems("5th column").Text

你可以依赖指数;示例代码(第一行和第一列):

或者为行指定一个
名称
,并使用此名称引用该行:

 Dim curEntry As New ListViewItem(New String() {item.sItemName.ToString(), item.sPrice.ToString("C2"), item.iNumber.ToString(), item.sPriceTot.ToString("C2")})
 curEntry.Name = "Row 1" 
 ListView1.Items.Add(curEntry)

 Dim val11 As String = ListView1.Items("Row 1").SubItems(0).Text
更新:

如果您通过自己的方法添加子项(
子项。添加
),并为每个子项指定一个
名称,则也可以通过其
名称
(列)引用子项

 Dim curEntry As New ListViewItem(New String() {item.sItemName.ToString(), item.sPrice.ToString("C2"), item.iNumber.ToString(), item.sPriceTot.ToString("C2")})
 curEntry.SubItems.Add("otherColumn").Name = "5th column"
 curEntry.Name = "Row 1" 
 ListView1.Items.Add(curEntry)

 Dim val15 As String = ListView1.Items("Row 1").SubItems("5th column").Text

什么是空值?您是否测试了
ListView1.SelectedItems(0)
是否不为空?(
ListView1.SelectedItems.Count>0
?)没有ListView1.SelectedItems(0)如果执行ListView1.SelectedItems(0)。子项(0)。文本它会按预期返回值什么是空值?您是否测试了
ListView1.SelectedItems(0)
是否不为空?(
ListView1.SelectedItems.Count>0
?)没有ListView1.SelectedItems(0)如果执行ListView1.SelectedItems(0)。子项(0)。文本返回值为Expected@Mokmeuh是的,当然。。。两件事和ListViews有关LOL。你在使用我的代码。。。至少我知道如何使用它的所有相关部分:)支持按索引引用,但不支持按名称引用确定吗@克里斯读了我的密码。我按姓名附上了一份参考资料。但它指的是整个对象,即行;不是到专栏。@Chris这就是我困惑的原因,我在msdn上看到了,这应该是可行的,代码应该是可行的,但我会使用数字。只有当我决定添加另一行时,所有事情都会发生变化,这让我很生气x)@Chris显然你是对的:看看我的更新。我知道在这个问题上依靠人口技术是不可能的,但你也可以直接影响子项(更多的工作,但可能)。@Mokmeuh是的,当然。。。两件事和ListViews有关LOL。你在使用我的代码。。。至少我知道如何使用它的所有相关部分:)支持按索引引用,但不支持按名称引用确定吗@克里斯读了我的密码。我按姓名附上了一份参考资料。但它指的是整个对象,即行;不是到专栏。@Chris这就是我困惑的原因,我在msdn上看到了,这应该是可行的,代码应该是可行的,但我会使用数字。只有当我决定添加另一行时,所有事情都会发生变化,这让我很生气x)@Chris显然你是对的:看看我的更新。我知道在这个问题上依靠总体技术是不可能的,但是你也可以直接影响子项(更多的工作,但可能)。