本文介绍了音乐播放器vb.net的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
你好我们正在为visual studio 2010做音乐播放器项目,我写下面的代码但仍然有问题,它说索引超出了范围。必须是非负数且小于集合的大小。
行
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
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
推荐答案
这篇关于音乐播放器vb.net的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!