如何为Visual Basic 6中的每个列表项命名

时间:2011-09-02 12:12:39

标签: vb6

我正在使用列表控件制作音乐播放器。我想让用户更改列表中歌曲的名称,但我想要 THAT 列表项的某些属性来包含其路径。 请帮帮我。任何形式的帮助将不胜感激。提前致谢。

修改

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

1 个答案:

答案 0 :(得分:4)

对于列表框,在添加项目后,将其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