我用axWindowsMediaPlayer这个控件做一个小的播放器
然后用到this.axWindowsMediaPlayer1.Ctlcontrols.play();来控制其播放
出现了一个很奇怪的问题,下面先列出代码private void button1_Click(object sender, EventArgs e)
        {
            this.axWindowsMediaPlayer1.Visible = true;
            this.axWindowsMediaPlayer1.URL =videoPlayList[videoNum++];
            this.axWindowsMediaPlayer1.Ctlcontrols.play();
        }这样当播放某些格式文件的时候(如mkv),点击button1不能播放,axWindowsMediaPlayer控件无反应,需要在运行时右键axWindowsMediaPlayer控件点击"播放/暂停"后方可正常播放(不是解码的问题).但是当播放到其他格式如avi和wmv等时则不存在此问题,能正常播放.
等于说对于mkv格式的文件
this.axWindowsMediaPlayer1.Ctlcontrols.play();
这条语句没有起到效果于是我做了以下尝试
1.我又用了个按钮private void button1_Click(object sender, EventArgs e)
        {
            this.axWindowsMediaPlayer1.Visible = true;
            this.axWindowsMediaPlayer1.URL =videoPlayList[videoNum++];
        }
private void button2_Click(object sender, EventArgs e)
        {
            this.axWindowsMediaPlayer1.Ctlcontrols.play();
        }这样,分离了指定播放路径和播放的操作,当我先后点击button1,button2后,.mkv格式的视频能够正常播放
尝试2private void button1_Click(object sender, EventArgs e)
        {
            this.axWindowsMediaPlayer1.Visible = true;
            this.axWindowsMediaPlayer1.URL =videoPlayList[videoNum++];
            MessageBox.Show("");
            this.axWindowsMediaPlayer1.Ctlcontrols.play();
        }
我加了一个MessageBox,除此之外和原先的程序一摸一样!
但是当程序运行的时候,弹出MessageBox消息框后,视频便可以播放了.即之后的this.axWindowsMediaPlayer1.Ctlcontrols.play();语句被执行了
但之前的程序却执行不了
我不知道一个看句看似无关的MessageBox.Show("");为什么会对程序产生这样的影响
但实际情况是我不能依靠弹框和更多的按钮来实现视频播放这样一条简单的语句希望能在button1的click事件中实现视频的播放,可能再调用一个消息处理函数?求高人指点!!

解决方案 »

  1.   

    看看这样调用一下行不。
    private void myPlay()
    {
       Thread.sleep(xx);
       this.axWindowsMediaPlayer1.Ctlcontrols.play();
    }
    然后button1_Click中调用myPlay()
      

  2.   


    试了,不行.而且今天我又注意了一下,当播放其他文件的时候都是直接播放,而播放mkv的时候播放器状态为"准备就绪".之前曾经有一次设置,我把图也贴出来吧,反正怪怪的当然这里的.txt应该是.mkv  这样当我选择不在提示此扩展名(.mkv)之后,便出现了这种奇怪的情况.而且更有趣的是,如果我把.mkv的视频文件改成别的后缀名,如.wmv,.avi等,只需要这样一改,便又可以直接播放了.
    问题有点复杂有点奇怪,诚信求教!!