日期:2014-05-17  浏览次数:21367 次

C#为什么不能播放下一首歌曲?通过Windows Media Player
我在窗体中,添加了Windows Media Player控件,正常点击播放时,是
可以播放音乐的,现在我想要实现的功能是顺序播放每一首歌曲,
我的主要代码如下:


 //播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪
if(1==(int)this.SongPlayer.playState)
{
      if (t.Equals("顺序播放"))
      {
                    int row = (this.PlaySongRow + 1) % this.lstSong.Items.Count;
                    this.lstSong.Items[row].Selected = true;
                    this.SongPlayer.URL = this.lstSong.Items[row].SubItems[3].Text;
                    SongPlayer.Ctlcontrols.play(); //播放歌曲
                    ChangeSongColor();

                   //去掉以下这行代码后可以播放下一首歌曲,
                    //将其注释掉后就停止播放了。 
                   MessageBox.Show(this.lstSong.Items[row].SubItems[3].Text);
       }
 }


-------------------------------------------------
//去掉以下这行代码后可以播放下一首歌曲,
//将其注释掉后就停止播放了。 
 MessageBox.Show(this.lstSong.Items[row].SubItems[3].Text);
--------------------------------------------------
我该如何修改代码来实现播放下一首歌曲的功能呢?
难道真的要弹出一个对话框吗?
我试过了单独用一个线程来播放,但是这时不是播放下一首,而是播放下一首的下一首了。

用线程播放时的代码如下:



//播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪
 if(1==(int)this.SongPlayer.playState)
{
                if (t.Equals("顺序播放"))
                {
                    int row = (this.PlaySongRow + 1) % this.lstSong.Items.Count;
                    this.lstSong.Items[row].Selected = true;
                    this.SongPlayer.URL = this.lstSong.Items[row].SubItems[3].Text;

                    Thread thd = new Thread (delegate() {
                        SongPlayer.Ctlcontrols.play(); //播放歌曲
                    });