就是拖了个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一直被触发,不停地播放一下再停一下,直到满足条件才会持续播放。好像明明不满足条件,就能进入条件播放??
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一直被触发,不停地播放一下再停一下,直到满足条件才会持续播放。好像明明不满足条件,就能进入条件播放??
{
DateTime time = this.dateTimePicker1.Value; string now = DateTime.Now.ToString();
if (time.ToString() == now)
{
this.axWindowsMediaPlayer1.URL = "a.mp3";
}
}
试试上面的代码,timer控件本身就相当于一个循环,每次循环就播放一次音频文件或者视频文件
你所写的程序条件是永远满足的,所以当没fa循环一次就会播放一次,只有当指定时间的时候计时器
停止,时间不变时才会连续播放
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();
}
虽说还是有点小迷茫你所说的我的条件永远满足。给分。
DateTime dt1 = dateTimePicker1.Value;
DateTime dt2 = DateTime.Now;
label1.Text = dt2 .ToString("yyyy-MM-dd HH:mm:ss");这样不需要转换两次时间格式
在if (dt1 == dt2)处设置断点,看看它们的值。 另外,这段代码可以改一下,效率会高点,虽然说不影响什么
DateTime dt1 = dateTimePicker1.Value;
DateTime dt2 = DateTime.Now;
label1.Text = dt2 .ToString("yyyy-MM-dd HH:mm:ss"); 这样不需要转换两次时间格式