我在为我下载的歌曲制作一个音乐播放器。我让它播放我选择的歌曲,但我希望下一首歌在上一首结束后自动开始。
我尝试过使用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];
}这是我最后一次尝试,但它只是没有执行那段代码
我以为它会转到清单上的下一首歌,我没有任何错误
发布于 2019-05-30 17:24:14
一种方法是为所有歌曲构建一个播放列表,而不是一个一个地播放它们,这样,播放列表中的下一首歌将在最后一首歌完成后自动播放:
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;
}
}https://stackoverflow.com/questions/56382652
复制相似问题