【问题标题】:Listview subItem null列表视图子项 null
【发布时间】:2013-09-30 20:26:37
【问题描述】:

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

        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

但我得到一个空异常,因为 subItem 为空,因此调用 text 给我这个错误,但为什么它是空的,它不应该是空的

我需要知道为什么是 null 以及如何解决这个问题,谢谢

【问题讨论】:

  • 究竟什么是空?您是否测试过ListView1.SelectedItems(0) 不为空? (ListView1.SelectedItems.Count > 0?)
  • No Listview1.SelectedItems(0) 也不为空,如果您执行 Listview1.SelectedItems(0).SubItems(0).Text 它会按预期返回值

标签: .net vb.net


【解决方案1】:

您可以依赖索引;示例代码(第一行第一列):

 Dim val11 As String = ListView1.SelectedItems(0).SubItems(0).Text

或者将Name 分配给该行并使用此名称来引用它:

 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

更新:

如果您通过自己的方法 (SubItems.Add) 添加 SubItems(列),也可以通过其 Name 引用它们并为每个列分配 Name

 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

【讨论】:

  • @Mokmeuh 是的,当然......两件事,只是关于 ListViews LOL。你在使用我的代码......至少我知道如何使用它上面的所有相关部分:)
  • 支持按索引引用,但不支持按名称引用 确定吗? msdn.microsoft.com/en-us/library/1x4396ba.aspx
  • @Chris 阅读了我的代码。我已按名称包含参考。但它指的是整个对象,即行;不列。
  • @Chris 这就是为什么我很困惑,我在 msdn 上看到了,这应该可以工作,代码应该可以工作,但我会选择数字,只有当我决定添加另一行时,一切都会改变惹我生气 x)
  • @Chris 显然你是对的:看看我的更新。我知道依靠人口技术来解决问题是不可能的,但您也可以直接影响子项(更多的工作,但可能)。
猜你喜欢
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多