Vb6 如何在Visual Basic 6中为每个列表项指定名称
我正在使用列表控件制作音乐播放器。我想让用户更改列表中歌曲的名称,但我想让列表项的一些属性包含其路径。 请帮我做这件事。任何形式的帮助都将不胜感激。提前谢谢 编辑Vb6 如何在Visual Basic 6中为每个列表项指定名称,vb6,Vb6,我正在使用列表控件制作音乐播放器。我想让用户更改列表中歌曲的名称,但我想让列表项的一些属性包含其路径。 请帮我做这件事。任何形式的帮助都将不胜感激。提前谢谢 编辑 Private Sub AddToList(ByVal txtFileName As String) Dim I As Integer Dim blnFileAlreadyexists As Boolean txtFileName = Trim(txtFileName) If txtFileName &
Private Sub AddToList(ByVal txtFileName As String)
Dim I As Integer
Dim blnFileAlreadyexists As Boolean
txtFileName = Trim(txtFileName)
If txtFileName <> "" Then
blnFileAlreadyexists = False
For I = 0 To List1.ListCount - 1
If Trim(List1.List(I)) = txtFileName Then
blnFileAlreadyexists = True
End If
Next
If Not blnFileAlreadyexists Then
List1.AddItem (txtFileName)
List1.ItemData (txtFileName)
End If
End If
End Sub
Private子AddToList(ByVal txtFileName作为字符串)
作为整数的Dim I
Dim BlnFileReadyExists为布尔型
txtFileName=Trim(txtFileName)
如果txtFileName为“”,则
blnfilelReadyExists=False
对于List1.ListCount-1的I=0
如果Trim(List1.List(I))=txtFileName,则
blnFileAlreadyexists=True
如果结束
下一个
如果不是blnfilealready,那么
List1.AddItem(txtFileName)
List1.ItemData(txtFileName)
如果结束
如果结束
端接头
对于列表框,添加项目后,将其x.itemdata(x.newindex)
设置为包含相应数据的数组(或UDT数组)的索引
对于listview,您可以类似地使用单个项.Tag
或.Key
来存储数组(或集合)索引
链接列表框示例
Option Explicit
Private Type TFileData
OriginalFilePath As String
ListBoxIndex As Integer
MoreBlaBla As String
'//any more members
End Type
Private maFiles() As TFileData
Private Sub Form_Load()
'//initial alloc
ReDim maFiles(0)
AddToList "AAAA"
AddToList "BBBB"
AddToList "AAAA"
AddToList "CCCC"
'//test by looping listbox;
Dim i As Integer
For i = 0 To List1.ListCount - 1
MsgBox List1.List(i) & " - " & maFiles(List1.ItemData(i)).OriginalFilePath
Next
'// a better type centric test;
For i = 0 To UBound(maFiles) - 1
MsgBox maFiles(i).OriginalFilePath & " - List entry: " & List1.List(maFiles(i).ListBoxIndex)
Next
End Sub
Private Sub AddToList(ByVal txtFileName As String)
Dim i As Integer
Dim blnFileAlreadyexists As Boolean
txtFileName = Trim(txtFileName)
If txtFileName <> "" Then
blnFileAlreadyexists = False
For i = 0 To List1.ListCount - 1
If Trim(List1.List(i)) = txtFileName Then
blnFileAlreadyexists = True
End If
Next
If Not blnFileAlreadyexists Then
'//add to list
List1.AddItem (txtFileName)
'//store the original value in the array;
maFiles(UBound(maFiles)).OriginalFilePath = "TEST: " & txtFileName
'//store the index of the array in the list;
List1.ItemData(List1.NewIndex) = UBound(maFiles)
'//or better store in the type
maFiles(UBound(maFiles)).ListBoxIndex = List1.NewIndex
'//increment the array for the next item;
ReDim Preserve maFiles(UBound(maFiles) + 1)
End If
End If
End Sub
选项显式
私有类型TFileData
原始文件路径作为字符串
ListBoxIndex为整数
莫布拉布拉为弦
“//还有其他成员吗
端型
私有maFiles()作为TFileData
专用子表单_加载()
'//初始分配
ReDim文件(0)
AddToList“AAAA”
地址列表“BBBB”
AddToList“AAAA”
地址列表“CCCC”
“//通过循环列表框进行测试;
作为整数的Dim i
对于List1.ListCount-1的i=0
MsgBox List1.List(i)&“-”和maFiles(List1.ItemData(i)).OriginalFilePath
下一个
“//更好的以类型为中心的测试;
对于i=0到UBound(maFiles)-1
MsgBox maFiles(i).OriginalFilePath&“-List条目:”&List1.List(maFiles(i).ListBoxIndex)
下一个
端接头
私有子AddToList(ByVal txtFileName作为字符串)
作为整数的Dim i
Dim BlnFileReadyExists为布尔型
txtFileName=Trim(txtFileName)
如果txtFileName为“”,则
blnfilelReadyExists=False
对于List1.ListCount-1的i=0
如果Trim(List1.List(i))=txtFileName,则
blnFileAlreadyexists=True
如果结束
下一个
如果不是blnfilealready,那么
“//添加到列表中
List1.AddItem(txtFileName)
“//将原始值存储在数组中;
maFiles(UBound(maFiles)).OriginalFilePath=“TEST:”&txtFileName
'//将数组的索引存储在列表中;
List1.ItemData(List1.NewIndex)=UBound(maFiles)
“//或更好地存储在类型中
maFiles(UBound(maFiles)).ListBoxIndex=List1.NewIndex
'//增加下一项的数组;
ReDim保留主文件(UBound(主文件)+1)
如果结束
如果结束
端接头
我该怎么做,请帮我输入代码。我已经在我的问题中进行了编辑并添加了代码。添加了一个将类型中的一组数据与listbox entryReDim Preserve关联的示例可能是一个杀手。通常在这里使用集合会更快。您可以“匿名”(无键)添加项,并通过索引检索它们。@YASH:我同意@Bob的说法ReDim-Preserve
对于相当小的数组很好,但随着数据项数量的增加,效率会变得更低,因为它每次都必须将数组的全部内容复制到一个新数组中。集合在内部是链接列表,因此无论有多少项,添加项所需的时间都是相同的(从技术上讲,VB6集合是双链接列表,因此在列表两端插入都很快:)