我有一个文件显示第一行的歌曲名称,然后是第二行的流派,第三行的时间。
实施例
All You Need is Love-Beatles
Rock
4.25
这种情况继续下去。我需要一些方法来对应带有流派的歌曲,然后使用数组在名为 lstPlayList 的列表框中显示它们
我有
strSongs(intCount) = objReader.ReadLine()
strGenre(intCount) = objReader.ReadLine()
dblLength(intCount) = Convert.ToDouble(objReader.ReadLine())
用于存储每个变量,但我无法将歌曲附加到流派
答案 0 :(得分:0)
而不是为一个项目设置三个单独的数组,你可以像其他评论者所说的那样,创建一个数据库,但如果你不想那么做,试试这个。
在Form的类定义列表顶部创建一个结构: -
Structure Song
Dim Name As String
Dim Genre As String
Dim Duration As Single
End Structure
这有效地创建了一个新的数据类型。
接下来,创建一个这样的数据类型列表: -
Dim Songs As New List(Of Song)
当您从文件中读取数据时,您可以将数据添加到列表中,而不是您在问题中包含的数据: -
Dim newSong As Song
newSong.Name = objReader.ReadLine()
newSong.Genre = objReader.ReadLine()
newSong.Duration = Convert.ToDouble(objReader.ReadLine())
现在您有一个包含所有数据的列表,您可以搜索列表并将结果作为所有结果的新列表返回。这是搜索和返回列表的函数: -
Private Function SearchSongsByGenre(searchGenre As String) As List(Of Song)
Dim returnList As New List(Of Song)
For Each searchSong As Song In Songs
If searchSong.Genre = searchGenre Then
returnList.Add(searchSong)
End If
Next
Return returnList
End Function
要在另一个子组件中使用它,只需在子组件中创建一个名为..的列表说.. SearchResults: -
Dim SearchResults As New List(of Song)
Searchresults = SearchSongsByGenre("Rock")
现在你有一个所有歌曲的列表 Rock
比搜索数组和从3个可能会失去同步的数组中获取数据要安全得多。