我想在我的vb.net代码中使用以下VB6 listindex:
setTheR CStr(payReq.ItemData(payReq.ListIndex))
但如果我将其复制并粘贴到VB.net中,它就不会接受它。
这就是VB.net将VB6转换为.net代码所做的事情:
strContract = payReq.Items.Item(payReq.FocusedItem.Index).Text
但是,检查该值会返回名称而不是索引。而VB6代码返回值2311(这是它需要返回的值)
当我向listview添加项目时,我这样做:
Item = payReq.Items.Add(rsPayRequests.Fields("userid").Value)
Item.SubItems.Insert(1, New System.Windows.Forms.ListViewItem.ListViewSubItem(Nothing, VB6.Format(rsPayRequests.Fields("reqdatetime").Value, "mm/dd/yyyy")))
但我注意到它也是这样做的:
payReq.Items.Add(New VB6.ListBoxItem(Item, rsPayRequests.Fields("requestNum").Value))
但这不适用于.net中的listview,因为上面是列表框而不是列表视图。列表框中的.net是否有等效的自定义索引?
任何帮助都会很棒!
大卫
答案 0 :(得分:2)
尝试strContract = lstPayRequest.FocusedItem.Index
您使用它的方式是返回该索引处的项目
编辑:
要回答您的问题,您可以将子项添加到listviewitem,也可以使用ListViewItem的tag属性作为自定义索引。
Dim lv As New ListViewItem
lv.Text = "Item1"
lv.Tag = 1001
lv.SubItems.Add("SubItem1")
lv.SubItems.Add("SubItem2")
lstPayRequests.Items.Add(lv)
答案 1 :(得分:0)
假设我已经读过这个,你正在做许多VB6程序员所做的事情。您将相关值存储在ItemData字段中,该字段不是索引但与项目相关。在VB6中非常常见。
不幸的是,VB.NET并不直接支持这种做法。 VB.NET列表框没有ItemData的概念,因此无法直接转换VB6代码。我遇到的唯一解决方案是基于ListViewItem类创建一个类。它可以具有显示名称和项目数据属性。然后,当您向列表中添加项目时,您将创建自定义项目类,填充属性并将该实例添加到列表中。然后,您可以通过将所选项目强制转换为自定义项目类来检索项目数据值。
复制内置VB6功能需要做很多工作,但这是我见过的唯一选择。希望有人对这个问题有更好的答案,我也会学到。