在PlayStateChange Event中更改AxWindowsMediaPlayer URL时,它不会自动开始播放,只是更改为"Ready"状态

Moh*_*ati 5 .net c# windows-media-player winforms axwindowsmediaplayer

我的C#WinForms程序中有一个"AxWindowsMediaPlayer"控件.当我正常更改URLWindowsMediaPlayer1 的属性时,它工作正常并自动播放新的mp3文件.

当歌曲结束时,WindowsMediaPlayer1状态变为Stopped,我想下一步URL自动开始播放.

我使用了PlayStatChange事件,所以当玩家状态是Stopped,URL将改变,但不自动播放!

播放器进入Ready状态直到我按下WindowsMediaPlayer1上的播放按钮.

这是代码:

private void Form1_Load(object sender, EventArgs e)
{
    WindowsMediaPlayer1.URL = "6.mp3"; //Works fine      
}
private void button1_Click(object sender, EventArgs e)
{
    WindowsMediaPlayer1.URL = "4.mp3"; //Works fine. It changes the music.
}
private void WindowsMediaPlayer1_PlayStateChange(object sender, 
    AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
    if (e.newState == 1) //1 is for "Stopped" State
        WindowsMediaPlayer1.URL = "5.mp3"; 
    // Here is the problem. 
    // URL Will change but player goes to "Ready" State 
    // But not in "playing" until I press the play button in control.
}
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

Rez*_*aei 7

如媒体播放器文档中所述,您不应设置Urlfrom事件处理程序代码.相反,你可以这样播放下一个文件:

private void axWindowsMediaPlayer1_PlayStateChange(object sender, 
    AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
    if (e.newState == 1) 
    {
        this.BeginInvoke(new Action(() => {
            this.axWindowsMediaPlayer1.URL = @"address of nextfile";
        }));
    }   
}
Run Code Online (Sandbox Code Playgroud)

另外作为另一种选择,您可以考虑使用播放列表.