C# 如何播放列表中的所有歌曲<;歌曲>;使用Windows Media Player?

C# 如何播放列表中的所有歌曲<;歌曲>;使用Windows Media Player?,c#,axwindowsmediaplayer,C#,Axwindowsmediaplayer,所以我有一个名为SąrašasList的列表类,它有一个名为vardas的字符串项,其中包含一首歌曲的路径名,我在这个列表中有几首歌曲,还有AX Windows Media player的GUI,但当我写: private void axWindowsMediaPlayer1_Enter(object sender, EventArgs e) { foreach (SąrašasList d in atrinktas) { axWindowsMediaPlayer

所以我有一个名为SąrašasList的列表类,它有一个名为vardas的字符串项,其中包含一首歌曲的路径名,我在这个列表中有几首歌曲,还有AX Windows Media player的GUI,但当我写:

private void axWindowsMediaPlayer1_Enter(object sender, EventArgs e)
{
    foreach (SąrašasList d in atrinktas)
    {
        axWindowsMediaPlayer1.URL = d.getVardas();
    }
}
它只播放最后一首歌,但不播放另一首,我该怎么办?
我想让这个播放器一首接一首地播放所有歌曲。

基本上,您所做的是迭代所有歌曲,然后将每个歌曲加载到播放器中。当然,你的玩家只能处理其中一个,所以你的最后一个收藏是有效的

你应该做的是加载你的第一首歌,在每个媒体的结尾,你必须加载n+1首歌

private System.Timers.Timer Timer; // Used to introduce a delay after the MediaEnded event is raised, otherwise player won't chain up the songs

private void ScheduleSongs() {
    var count = 0;
    var firstSong = atrinktas.FirstOrDefault(); // using Linq
    if(firstSong == null) return;
    axWindowsMediaPlayer1.URL = firstSong.getVardas();
    // PlayStateChange event let you listen your player's state. 
    // https://msdn.microsoft.com/fr-fr/library/windows/desktop/dd562460(v=vs.85).aspx
    axWindowsMediaPlayer1.PlayStateChange += delegate(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e) { 
       if(e.newState == 8 && count < atrinktas.Count()) {
          count++;
          var nextSong = atrinktas[count];
          axWindowsMediaPlayer1.URL = nextSong.getVardas();
          Timer = new System.Timers.Timer() { Interval = 100 };
          Timer.Elapsed += TimerElapsed; // Execute TimerElapsed once 100ms is elapsed          
       } 
    };
}

private void TimerElapsed(object sender, System.Timers.ElapsedEventArgs e)
{
    Timer.Stop();
    Timer.Elapsed -= TimerElapsed;
    Timer = null;

    axWindowsMediaPlayer1.Ctlcontrols.play(); // Play the next song
}
private System.Timers.Timer Timer;//用于在MediaEnded事件引发后引入延迟,否则播放器将无法链接歌曲
私有无效调度表(){
var计数=0;
var firstSong=atrinktas.FirstOrDefault();//使用Linq
if(firstSong==null)返回;
axWindowsMediaPlayer1.URL=firstSong.getVardas();
//PlayStateChange事件可让您收听玩家的状态。
// https://msdn.microsoft.com/fr-fr/library/windows/desktop/dd562460(v=vs.85).aspx
axWindowsMediaPlayer1.PlayStateChange+=委托(对象发送方,AxWMPLib.\u WMPOCXEvents\u PlayStateChangeEvent e){
如果(e.newState==8&&count
我希望它播放最后一首歌…是的,它播放最后一首歌,但我希望它播放列表中的所有歌曲现在部分:“发件人,PlayStateChangeEvent e”变为红色,现在同一部分+e.newState变为红色更新(删除lambda并添加;最后)PlayStateChangeEvent e变为红色,“找不到类型或命名空间PlayStateChangeEvent”。我不明白,我应该在某处声明还是什么?:/好的,用AxWMPLib替换PlayStateChangeEvent.\u WMPOCXEvents\u PlayStateChangeEvent(很抱歉,我现在无法检查我的代码)