【问题标题】:Selected ListView item column value选定的 ListView 项列值
【发布时间】:2019-03-16 16:11:44
【问题描述】:

我已经创建了一个列表视图,

并且 id 喜欢能够更改所选项目的值。我想知道是否有可能以某种方式访问​​所选项目的“ID”字符串。

我创建了一个事件来检测用户何时选择了一个项目并尝试了 colID.Index.ToString 但它只返回实际的列索引。任何人都可以提供返回所选项目 ID 的语法吗?

Private Sub lvwCars_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lvwCars.SelectedIndexChanged
currentCarIDString = colID.Index.ToString
end sub

【问题讨论】:

  • currentCarIDString = listView1.Items(0).SubItems(1).Text : listView1.Items(0).SubItems(1).Text = "100"
  • 无论选择什么项目,这总是返回 1
  • 当然,0 索引是硬编码的。获取集合的最后选择索引:dim selectedIndex = listView1.SelectedIndices(listView1.SelectedIndices.Count - 1)。像往常一样,在访问之前检查SelectedIndices.Count > 0是否。如果您想使用ListView.FocusedItem.Index,请注意,如果用户选择了多个项目,则该值将为空(无)。
  • 我明白了,谢谢你的信息!幸运的是,对于这个特定的任务,多选是关闭的。将保留此解决方案以备将来使用。谢谢

标签: vb.net


【解决方案1】:

要么是项目文本,要么是子项目文本。

currentCarIDString = lvwCars.Items(colID.Index).Text

currentCarIDString = lvwCars.Items(colID.Index).SubItems(1).Text

【讨论】:

  • @BrianNaranjo :Ctznkane 的一个简单疏忽,他使用 C# 语法而不是 VB.NET。我编辑了答案以修复它。
  • @ParrishHusband:不幸的是ListViewdoesn't have an indexer。在这种情况下,该属性将被标记为 Default
  • @VisualVincent 是的,看起来你是对的,我经常看到在 VB.NET 中不必要地添加了Items,但我弄错了。
【解决方案2】:

我找到了适合我的具体情况的东西

ListView.FocusedItem.Index

因为我的 ID 总是加一,所以这个解决方案很完美。但是,如果任何人都可以提供一种可以检索列中一行的实际值的解决方案,那就太好了。

【讨论】:

  • 您可以使用ListView.FocusedItem.SubItems(1).Text 检索所选项目的ID 列中的文本。请参阅ListViewItem 的文档,了解有关您可以从特定项目中获得什么的更多信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 2016-07-12
  • 1970-01-01
  • 1970-01-01
  • 2014-06-18
相关资源
最近更新 更多