我正在为下载的歌曲制作音乐播放器。我可以播放选定的歌曲,但是我希望下一首歌曲结束后自动开始播放。
我已经尝试过使用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];
}
这是我最后尝试的方法,但是它没有执行该代码
我希望它只会跳到列表中的下一首歌曲,没有任何错误
答案 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;
}
}