if (axWindowsMediaPlayer.playState == WMPLib.WMPPlayState.wmppsStopped)
{
axWindowsMediaPlayer.URL = @"d:\abc.mp3";
MessageBox.Show("Something");
axWindowsMediaPlayer.Ctlcontrols.play();
}在以上代码里头,去掉 MessageBox.Show("Something"); 这一行,
它就播放不了.有什么办法能把这一行去掉,还可以正常播放呢?请高手指点迷经,

解决方案 »

  1.   

    private void axWindowsMediaPlayer_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e){
     if (axWindowsMediaPlayer.playState == WMPLib.WMPPlayState.wmppsStopped)
     {
    axWindowsMediaPlayer.URL = @"d:\abc.mp3";
    MessageBox.Show("Something");
    axWindowsMediaPlayer.Ctlcontrols.play();
     }
    }补充一下,上面的提问.
      

  2.   

    调试以后看了看,原来没有axWindowsMediaPlayer.Ctlcontrols.play();句是,是可以正常播放的,但就是不能没有 MessageBox.Show("Something");句只要用
    axWindowsMediaPlayer.URL = @"d:\abc.mp3";
             MessageBox.Show("Something");
    两个句子,就可以播放,
    而用这两句
    axWindowsMediaPlayer.URL = @"d:\abc.mp3";
             axWindowsMediaPlayer.Ctlcontrols.play();
    就无法播放,老是处是,准备就续的状态.
      

  3.   

    首先,你播放的位置有问题,似乎放在PlayStateChange中有些不妥。不过你可以通过设置settings.autoStart为true的方式来替换控制play方式。
    例如:
    axWindowsMediaPlayer.URL = @"d:\abc.mp3";
    axWindowsMediaPlayer.settings.autoStart = true;
      

  4.   

    问题已解决,原因在于
    PlayStateChange 事件里头用 
    axWindowsMediaPlayer.Ctlcontrols.play(); 句是,
    可能在理论上冲突的,解决之策,把这一句写到,其他相关的事件 
    如,CurrentPlaylistChange 事件里写上便可.