我现在已经挣扎了一段时间,经过广泛的搜索,我还没有找到答案。
在我的Visual Basic类中,我有一个程序,我必须从文本文件(songs.txt)获取文本,在列表框中显示类型,并在显示类型后在组合框中显示相应的歌曲
目前,这是我的代码。
' Variables
Dim strFilePath As String = "E:\Advanced VB\DJPlayList\DJPlayList\songs.txt"
Dim strFileError As String = "File not found. Please try again."
Dim strFileErrorTitle As String = "File Error"
Dim objReader As IO.StreamReader
Dim intCount As Integer = 0
Dim strSongGenre(intCount) As String
Dim i As Integer = 0
' Finding the file
If IO.File.Exists(strFilePath) Then
' Opening the text file
objReader = IO.File.OpenText(strFilePath)
Do Until objReader.Peek = -1
ReDim Preserve strSongGenre(intCount)
strSongGenre(intCount) = objReader.ReadLine
cboMusicGenre.Items.Add(strSongGenre(intCount))
intCount += 1
Loop
Else
MsgBox(strFileError, , strFileErrorTitle)
Close()
End If
这会将文本文件中的所有信息添加到数组中并将其加载到列表框中,但我仍然坚持如何专门输出类型和相应的歌曲。
文本文件如下所示:
All You Need is Love-Beatles 'Song Name
Rock 'Song Genre
4.25 'Song Time
What Hurts the Most-Rascal Flatts
Country
5.25
Touch it-Busta Rhymes
Rap
5.46
My Girl-Temptations
R&B
4.35
What you know?-T.I.
Rap
4.30
我如何专门获得流派和歌曲标题?感谢您提前获得帮助
答案 0 :(得分:1)
所以实际发生的是你的代码正在读取每一行并将它们全部存储在你的ComboBox中。
在这个级别上最容易做的事情可能是创建2个额外的临时字符串变量,而不是为循环的每次迭代读取1行,读取彼此相关的三行
tempName= objReader.ReadLine
strSongGenre(intCount) = objReader.ReadLine
tempDuration = objReader.ReadLine
如果您不想使用歌曲的名称和持续时间,则不对它们执行任何操作,并且它们将在循环的下一次迭代中被覆盖
所以你的最终代码应该是这样的
Do Until objReader.Peek = -1
Dim tempName,tempDuration as string
ReDim Preserve strSongGenre(intCount)
tempName= objReader.ReadLine
strSongGenre(intCount) = objReader.ReadLine
tempDuration = objReader.ReadLine
cboMusicGenre.Items.Add(strSongGenre(intCount))
intCount += 1
Loop