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集合是双链接列表,因此在列表两端插入都很快:)