就是拖了个dateTimePicker控件用来设定定时时间,一个label每隔1秒显示一次系统时间,当这两个时间相等时,用Timer的Tick事件触发mpplayer控件播放选定好的mp3,事件代码如下:
private void timer1_Tick(object sender, EventArgs e)
        {
            
            label1.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");                                    
            DateTime dt1 = dateTimePicker1.Value;
            DateTime dt2 = DateTime.Parse(label1.Text);
            if (dt1 == dt2)
            {
                timer1.Enabled = false;
                axWindowsMediaPlayer1.Ctlcontrols.play();
                
            }
        }
运行后问题来了,这个mpplayer一直被触发,不停地播放一下再停一下,直到满足条件才会持续播放。好像明明不满足条件,就能进入条件播放??

解决方案 »

  1.   

     private void timer1_Tick(object sender, EventArgs e)
            {
                DateTime time = this.dateTimePicker1.Value;            string now = DateTime.Now.ToString();
                if (time.ToString() == now)
                {
                    this.axWindowsMediaPlayer1.URL = "a.mp3";
                }
            }
    试试上面的代码,timer控件本身就相当于一个循环,每次循环就播放一次音频文件或者视频文件
    你所写的程序条件是永远满足的,所以当没fa循环一次就会播放一次,只有当指定时间的时候计时器
    停止,时间不变时才会连续播放
      

  2.   

    嗯,用你的方法做可以了,将URL获取写在条件内,但是播放写在外面,代码如下:
    private void timer1_Tick(object sender, EventArgs e)
            {
                
                label1.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");                                    
                DateTime dt1 = dateTimePicker1.Value;
                DateTime dt2 = DateTime.Parse(label1.Text);
                if (dt1 == dt2)
                {
                    axWindowsMediaPlayer1.URL = pathTxt.Text;
                    timer1.Enabled = false;                                
                }
                axWindowsMediaPlayer1.Ctlcontrols.play();
            }
    虽说还是有点小迷茫你所说的我的条件永远满足。给分。
      

  3.   

    在if (dt1 == dt2)处设置断点,看看它们的值。另外,这段代码可以改一下,效率会高点,虽然说不影响什么                                
                DateTime dt1 = dateTimePicker1.Value;
                DateTime dt2 = DateTime.Now;
                label1.Text = dt2 .ToString("yyyy-MM-dd HH:mm:ss");这样不需要转换两次时间格式
      

  4.   

    判断的时候精确到秒就可以了
    在if (dt1 == dt2)处设置断点,看看它们的值。 另外,这段代码可以改一下,效率会高点,虽然说不影响什么                                 
                DateTime dt1 = dateTimePicker1.Value; 
                DateTime dt2 = DateTime.Now; 
                label1.Text = dt2 .ToString("yyyy-MM-dd HH:mm:ss"); 这样不需要转换两次时间格式