0

所以我正在开发一个基于 Un4seen Bass 音频库的音乐播放器,除了播放列表管理我很难修复它之外,它一切正常,我的播放列表系统工作如下,我有一个名为 Playlist 的类,它包含所有播放列表管理功能(添加、删除、跟踪(这是问题所在)...等),它包含一个作为播放列表的列表框,以及一个负责跟踪 Main 上 Player 类上当前播放文件的零基索引的计时器表单,如果我在 Playlist 类上激活无重复模式,它会很好地跟踪当前正在播放的文件,我可以正确获取索引,但是如果我停用无重复模式并假设我有(我们现在称之为 Song1)Song1作为播放列表中的第一个文件,我也将它作为播放列表中的第十个文件。播放列表将向播放器提供要开始的文件名,因为IndexOf播放列表的功能是列表中的第一个匹配,当它到达第十个文件即 Song1 时,它将返回到列表中的第一个文件并开始仅循环播放这 9 首歌曲,我尝试使用 `LastIndexOf但仍然无法正常工作,我虽然使用唯一文件名,但我得到文件不存在IO.File.Exists,你能指导我吗?这是我的代码:

Private Sub IndexTimer_Tick(sender As Object, e As EventArgs) Handles IndexTimer.Tick
        Try
            If My.Forms.Form1.Visible = True Then
                If My.Settings.Playlist_Tracking = My.Forms.Settings.PlaylistTracking.FirstIndex Then
                    Index = Playlist.Items.IndexOf(My.Forms.Form1.P1.sourceURL)
                ElseIf My.Settings.Playlist_Tracking = My.Forms.Settings.PlaylistTracking.LastIndex Then
                    Index = Playlistalt.LastIndexOf(My.Forms.Form1.P1.sourceURL)
                End If
            End If
        Catch ex As Exception
            Console.WriteLine(My.Computer.Clock.LocalTime.ToShortTimeString & ": " & ex.Message)
        End Try
    End Sub

PS:这PlaylistaltList(of string)因为Listbox没有LastIndexOf方法
我发现的所有解决方案都是使用Windows Media Player,我使用过,但对我来说还不够
谢谢^^

编辑:歌曲添加子的代码

Public Sub Add(song As String)
        If IO.File.Exists(song) Then
            If My.Settings.Playlist_RemoveOnAdd = False AndAlso My.Settings.Playlist_Tracking <> My.Forms.Settings.PlaylistTracking.FirstIndexAdvanced Then
                Playlist.Items.Add(song)
                Playlistalt.Add(song)
            ElseIf My.Settings.Playlist_RemoveOnAdd = False AndAlso My.Settings.Playlist_Tracking = My.Forms.Settings.PlaylistTracking.FirstIndexAdvanced Then
                Playlist.Items.Add(song)
                Playlistalt.Add(song)
                RemoveDuplicates(True)
            ElseIf My.Settings.Playlist_RemoveOnAdd = True AndAlso My.Settings.Playlist_Tracking <> My.Forms.Settings.PlaylistTracking.FirstIndexAdvanced Then
                Playlist.Items.Clear()
                Playlist.Items.Add(song)
                Playlistalt.Clear()
                Playlistalt.Add(song)
            ElseIf My.Settings.Playlist_RemoveOnAdd = True AndAlso My.Settings.Playlist_Tracking = My.Forms.Settings.PlaylistTracking.FirstIndexAdvanced Then
                Playlist.Items.Clear()
                Playlist.Items.Add(song)
                Playlistalt.Clear()
                Playlistalt.Add(song)
                RemoveDuplicates(True)
            End If
            RaiseEvent PlaylistItemsChanged()
        Else
            Console.WriteLine(My.Computer.Clock.LocalTime.ToShortTimeString & ": " & "Please check if your file exists then add it to the playlist")
        End If
    End Sub```
4

1 回答 1

0

好像我发现了一个问题(来自@Idle_Mind 评论),Next/Back 的代码如下

 Public Function Next_s()
        Try
                Index += 1
            RaiseEvent Next_song()
            Return Playlist.Items.Item(Index)
        Catch ex As Exception
            Console.WriteLine(My.Computer.Clock.LocalTime.ToShortTimeString & ": " &
ex.Message)
            Try
                    Index = 0
                RaiseEvent Next_song()
                Return Playlist.Items.Item(0)
            Catch ex2 As Exception
                Console.WriteLine(My.Computer.Clock.LocalTime.ToShortTimeString & ":  " & ex2.Message)
            End Try
        End Try
    End Function
Public Function Prev_s()
        Try
                Index -= 1
            Return Playlist.Items.Item(Index)
            RaiseEvent previous_song()
        Catch ex As Exception
            Console.WriteLine(My.Computer.Clock.LocalTime.ToShortTimeString & ": " & ex.Message)
            Try
                    Index = Playlist.Items.Count - 1
                RaiseEvent previous_song()
                Return Playlist.Items.Item(Index)
            Catch ex2 As Exception
                Console.WriteLine(My.Computer.Clock.LocalTime.ToShortTimeString & ": " & ex2.Message)
            End Try
        End Try
    End Function
于 2020-06-12T14:28:58.797 回答