在VB.Net 2019中逐一播放不同的MP3文件。

问题描述 投票:0回答:1

我正在VB.Net 2019中创建一个小表单应用程序,它将扫描我的硬盘驱动器中的MP3文件,然后以随机顺序播放它们。此刻,我扫描我的磁盘并将所有内容加载到两个列表框中(一个用于路径,一个用于文件名,因为我也想以CSV格式导出)。在未来的某一天,这些数据将被放到一个带有额外信息的数据库中,这样我就可以选择我想在那一刻随机播放的音乐类型。

当我点击cmdRandom命令按钮时,第一个文件开始播放,但当我想继续播放下一个随机文件时,该文件被搜索并加载到媒体播放器中,但没有开始播放(我必须手动点击 "播放")。

Private Sub cmdRandom_Click(sender As Object, e As EventArgs) Handles cmdRandom.Click
    intaantal = ListBox2.Items.Count
    Randomize()
    PlayMedia()
End Sub

Private Sub PlayMedia()
    intNumber = CInt(Int((intAantal * Rnd()) + 1))
    ListBox1.SelectedIndex = intNumber
    ListBox2.SelectedIndex = intNumber
    FileName = ListBox1.SelectedItem.ToString() + "\" + ListBox2.SelectedItem.ToString()
    lblSongText.Text = FileName
    '       mPlayer.URL = ""
    '       mPlayer.Refresh()
    '       mPlayer.close()
    '       mPlayer.settings.autoStart = True
    '       mPlayer.settings.setMode("loop", True)
    '       mPlayer.Ctlcontrols.play()
    mPlayer.URL = FileName
End Sub
Private Sub mPlayer_PlayStateChange(sender As Object, e As _WMPOCXEvents_PlayStateChangeEvent) Handles mPlayer.PlayStateChange
    If mPlayer.playState = mPlayer.playState.wmppsMediaEnded Then
        PlayMedia()
    End If
End Sub

PlayMedia()中所有被注释掉的项目都已经被测试过了,但是没有工作。我想在其中添加 mPlayer.Ctlcontrols.play() 在mPlayer_playStateChange()函数中,在当前if的else子句中可以工作,但这给了我一个编译错误(似乎在这个事件中不允许)。

我到底做错了什么?

vb.net mp3 windows-media-player
1个回答
0
投票

在网上又搜索了一下,找到了解决方案:(https:/social.msdn.microsoft.comForumssqlserveren-US31082234-7161-4446-a96e-32c0314dfe0factions-when-a-media-player-control-finished-playing?forum=vbgeneral). 这一切都与第一首歌曲结束和下一首歌曲加载之间的时间有关.我添加了一个定时器,现在事情已经解决了,我将定时器的间隔时间设置为100。

 Private Sub mPlayer_PlayStateChange(sender As Object, e As _WMPOCXEvents_PlayStateChangeEvent) Handles mPlayer.PlayStateChange
    If mPlayer.playState = mPlayer.playState.wmppsMediaEnded Then
        mPlayer.Ctlcontrols.stop()
        Timer1.Start()
    End If
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Timer1.Stop()
    PlayMedia()
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.