Click here to Skip to main content
15,848,157 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
hello guys i am doing music player project in visual studio 2010, i write the following code but still have a problem, it says Index was out of range. Must be non-negative and less than the size of the collection.
at line
VB
Player.URL = files(0)

guys can you help me? thanks alot

 Public Class Form1
#Region "Color Settings"
    Dim CurrentTrackColor As System.Drawing.Color = Color.Red
    Dim PausedTrackColor As System.Drawing.Color = Color.LightYellow
#End Region
    Dim WithEvents Player As New WMPLib.WindowsMediaPlayer
    Dim files As Collections.ObjectModel.ReadOnlyCollection(Of String)
    Dim titles As New List(Of String)
    Dim CurrentPlaying As Integer = 0
    Dim PreviouslyPlaying As Integer = 0

    Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        ' Dispose of player
        Player = Nothing
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TrackCol.Width = TrackList.Width - 20
        But_Pause.Enabled = False
        But_Stop.Enabled = False
        files = FileIO.FileSystem.GetFiles(My.Computer.FileSystem.SpecialDirectories.MyMusic, FileIO.SearchOption.SearchAllSubDirectories, "*.mp3")
        For Each a As String In files
            Me.TrackList.Items.Add(FileIO.FileSystem.GetName(a))
        Next
        Volume.Value = Player.settings.volume
        Me.Txt_TrackName.Text = Player.URL
        Player.settings.autoStart = False
        Player.URL = files(0)
        Player.enableContextMenu = False
        With Me.Timer1
            .Interval = 500
            .Start()
            .Enabled = True
        End With
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        ' Form is closing, so shutdown player
        Player.close()
    End Sub

    Private Sub ClickedOnPlayButton(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles But_Play.Click
        GUIMode("Play")
        updatePlayer()
        Player.controls.play()
    End Sub

    Private Sub ClickedOnStopNutton(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles But_Stop.Click
        Player.controls.stop()
        GUIMode("Stopped")
    End Sub

    Private Sub ClickedOnPauseButton(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles But_Pause.Click
        If Player.playState = WMPLib.WMPPlayState.wmppsPaused Then
            GUIMode("Play")
        Else
            GUIMode("Paused")
        End If
    End Sub

    Private Sub GUIMode(ByRef Guimode As String)
        Select Case Guimode
            Case "Play"
                ' Put GUI in playing mode guise
                Player.controls.play()
                But_Pause.BackColor = System.Drawing.SystemColors.Control
                But_Pause.Enabled = True
                But_Stop.Enabled = True
                But_Play.Enabled = True
            Case "Paused"
                ' put gui in paused mode guise
                But_Pause.Enabled = True
                But_Stop.Enabled = False
                But_Play.Enabled = False
                But_Pause.BackColor = PausedTrackColor
                Player.controls.pause()
            Case "Stopped"
                But_Pause.Enabled = False
                But_Stop.Enabled = False

        End Select
    End Sub

    Private Sub ScrollingVolume(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Volume.Scroll
        ' Change the player's volume
        Player.settings.volume = Volume.Value
    End Sub

    Private Sub Player_MediaError(ByVal pMediaObject As Object) Handles Player.MediaError
        MessageBox.Show("Unrecoverable Problem. Shutting Down", "MyMusic Player")
        Me.Close()
    End Sub

    Private Sub Player_PlayStateChange(ByVal NewState As Integer) Handles Player.PlayStateChange
        Static Dim PlayAllowed As Boolean = True
        Select Case CType(NewState, WMPLib.WMPPlayState)
            Case WMPLib.WMPPlayState.wmppsReady
                If PlayAllowed Then
                    Player.controls.play()
                End If
            Case WMPLib.WMPPlayState.wmppsMediaEnded
                ' Reach end of track move onto next, looping around
                PreviouslyPlaying = CurrentPlaying
                CurrentPlaying = (CurrentPlaying + 1) Mod files.Count
                ' Start protection (without it next wouldn't play
                PlayAllowed = False
                ' Play track
                Player.URL = files(CurrentPlaying)
                Player.controls.play()
                ' End Protection
                PlayAllowed = True
                updatePlayer()
        End Select

    End Sub

    Private Sub updatePlayer()
        ' Display track name
        Txt_TrackName.Text = Player.currentMedia.name
        ' Update TrackPostion
        With TrackPosition
            .Minimum = 0
            .Maximum = CInt(Player.currentMedia.duration)
            .Value = CInt(Player.controls.currentPosition())
        End With
        ' Display Current Time Position and Duration
        Txt_Progress.Text = Player.controls.currentPositionString & vbTab & Player.currentMedia.durationString
        ' Set Volume slide to match current volume
        Volume.Value = Player.settings.volume
        ' Is the CurrentPlaying Track No. is different to the Previous Track number.
        If CurrentPlaying <> PreviouslyPlaying Then
            ' Yes, 
            ' Set the forecolor of the corrisponding track, assiociated with the previous playing track, with the control color
            TrackList.Items(PreviouslyPlaying).ForeColor = System.Drawing.SystemColors.ControlText
        End If
        ' Set the forecolor of the corrisponding track, assiociated with the currently playing track, with the current track color
        TrackList.Items(CurrentPlaying).ForeColor = CurrentTrackColor
    End Sub     
   End Class
Posted
Comments
[no name] 10-Jun-14 6:08am    
Help you with what? It would appear that "files" does not contain anything.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900