MP3播放器随机功能不起作用

时间:2015-05-17 06:20:32

标签: vb.net visual-studio-2012

我刚开始我的第一个项目,我正在尝试制作一个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

2 个答案:

答案 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