我刚开始我的第一个项目,我正在尝试制作一个MP3播放器。 不幸的是,当我试图打开一首歌时,我的“随机”会导致整个程序崩溃。
这是Visual Studio Ultimate 2013中产生的错误:
An exception of type 'System.ArgumentOutOfRangeException' occurred in System.Windows.Forms.dll but was not handled in user code
Additional information: InvalidArgument=Value of '1' is not valid for 'index'.
请告诉我我的代码有什么问题,这是我在Github的存储库的链接,谢谢!
https://github.com/LefanTan/MP3_Player/tree/Mp3
编辑: 这一行是产生错误的代码 -
Private Sub wpm_PlayStateChange(sender As Object, e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles wpm.PlayStateChange While shuffle.CheckOnClick = True tempInt = r.Next(0, ListBox1.Items.Count + 1) wpm.URL = ListBox1.Items(tempInt) End While While RepeatToolStripMenuItem1.CheckOnClick = True wpm.URL = currentSong End While End Sub
答案 0 :(得分:1)
我认为这是有问题的潜艇:
Private Sub wpm_PlayStateChange(sender As Object, e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles wpm.PlayStateChange
While shuffle.CheckOnClick = True
tempInt = r.Next(0, ListBox1.Items.Count + 1)
wpm.URL = ListBox1.Items(tempInt)
End While
While RepeatToolStripMenuItem1.CheckOnClick = True
wpm.URL = currentSong
End While
End Sub
该行
tempInt = r.Next(0, ListBox1.Items.Count + 1)
应该是
tempInt = r.Next(0, ListBox1.Items.Count)
该函数的语法是Random.Next(min,max),其中min是包含的,max是独占的,即max isn不包括在生成随机数中。因为你在ListBox1.Items.Count中添加了一个(它将是集合的上限加上一个),所以你超出了范围。
答案 1 :(得分:0)
请检查您的迭代代码。
认为问题是,你的指数增加了
For Each item As String In My.Computer.FileSystem.GetFiles(txtfolder.Text, Microsoft.VisualBasic.FileIO.SearchOption.SearchTopLevelOnly, "*.mp3")
ListBox1.Items.Add(item)
Next