如何自动播放列表中的下一首歌

时间:2019-05-30 17:06:56

标签: c# playlist windows-media-player

我正在为下载的歌曲制作音乐播放器。我可以播放选定的歌曲,但是我希望下一首歌曲结束后自动开始播放。

我已经尝试过使用PlayStateChange事件,但是它似乎不起作用,在尝试调试(F11)时,歌曲结束后它什么也没做。

private void lstSongs_SelectedIndexChanged(object sender, EventArgs e)
        {
            index = lstSongs.SelectedIndex;
            axWindowsMediaPlayer1.URL = paths[lstSongs.SelectedIndex];

        }

这是播放所选歌曲的代码

void axWindowsMediaPlayer1_PlayStateChange()
        {
            index++;
            axWindowsMediaPlayer1.URL = paths[lstSongs.SelectedIndex];
        }

这是我最后尝试的方法,但是它没有执行该代码

我希望它只会跳到列表中的下一首歌曲,没有任何错误

1 个答案:

答案 0 :(得分:0)

一种方法是为所有歌曲建立一个播放列表,而不是一个一个地播放,这样一来,播放列表中的下一首歌曲将在最后一首歌曲播放完后自动播放:

WMPLib.IWMPPlaylist Playlist = axWindowsMediaPlayer1.newPlaylist("MyPlayList", "");
foreach(String song in lstSongs.Items)
{
    Playlist.appendItem(axWindowsMediaPlayer1.newMedia(song));
}
axWindowsMediaPlayer1.currentPlaylist = Playlist;
axWindowsMediaPlayer1.Ctlcontrols.play();

尚不清楚您是否在列表框中有多个选择,还是要播放列表框中的所有条目。

当更改时,您可以获取当前播放的歌曲:

private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
    if (e.newState == 3)
    {
        label1.Text = "Playing: " + axWindowsMediaPlayer1.Ctlcontrols.currentItem.name;
    }    
}