void open()
        {
            openFileDialog1.Filter = "Media File(*.mpg,*.dat,*.avi,*.wmv,*.wav,*.mp3,*rm,*rmvb)|*.wav;*.mp3;*.mpg;*.dat;*.avi;*.wmv;*.rm;*.rmvb|All(*.*)|*.*";//播放类型
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string filePath = openFileDialog1.FileName;
                if (filePath != "")
                {
                    this.timer2.Enabled = true;
                    axWindowsMediaPlayer1.URL = filePath;
                    axWindowsMediaPlayer1.Ctlcontrols.play();//播放
                }
            }
        }
        private void timer2_Tick(object sender, EventArgs e)
        {
            if (this.axWindowsMediaPlayer1.playState != WMPLib.WMPPlayState.wmppsStopped || this.axWindowsMediaPlayer1.playState != WMPLib.WMPPlayState.wmppsUndefined)
            {
                this.trackBar2.Maximum = (int)this.axWindowsMediaPlayer1.currentMedia.duration;//最大上限
                this.trackBar2.Value = (int)this.axWindowsMediaPlayer1.Ctlcontrols.currentPosition;//目前位置
            }
            if (this.axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsPlaying)//判断是否在播放
            {
                this.label1.Text = "正在播放:" + this.axWindowsMediaPlayer1.currentMedia.name;//正在播放的文件名
                this.label3.Text = this.axWindowsMediaPlayer1.Ctlcontrols.currentPositionString + "/" + this.axWindowsMediaPlayer1.currentMedia.durationString;
                this.Text =this.axWindowsMediaPlayer1.currentMedia.name;
            }
        }
跳转到timer2后一直在循环执行timer2,代码有错么?

解决方案 »

  1.   

    在openfile选着好播放文件以后跳转到timer2的时候,timer2一直在自身循环。。找了一天还是找不到那里出了问题
      

  2.   

    timer本来就是死循环,有什么奇怪的。
    不想循环直接停止就行了
      

  3.   

    timer设置的间隔是多大, 调试代码看看
      

  4.   

    Timer控件只要启动就会按照设置好的时间间隔循环执行。默认0.1秒(100MS)
    LZ如果想当用户点了OK了就执行一次,那根本就用不着Timer
    如果是想没个一段时间检测,那就该把 用户点击OK的判断放到Timer事件中
      

  5.   

    timer本身就是死循环。 就是while(true)  想要运行在某处 停止  用 Enadble属性(false)或者用Stop方法阻止时间运行。
      

  6.   

    我明白了,原来是windows media player控件不支持rmvb格式视频,所以我打开的时候一直在循环
      

  7.   

    private void timer2_Tick(object sender, EventArgs e)?
    应该是Elapsed事件吧