本人刚学C#,近日做了一个winform程序,程序是在一个窗体中调用一个定时器,然后定时器事件中打开另外一个窗体,其中另外窗体load事件中有播放MP3音乐的代码;此时通过定时器打开的窗体不可以播放音乐;但是在开始那个窗体中通过按钮打开这个有音乐的窗体时能够播放音乐。也就是说同一个窗体,load事件中有播放音乐的代码,通过定时器打开则音乐不了;通过其他窗体打开,则音乐可以播放。请各位大牛们给个指点这是为什么?
调试欢乐多
public void MainTime_Tick(object source, System.Timers.ElapsedEventArgs e)
{
MainTimer.Enabled = false;
Form form = new MyForm();
form.ShowDialog();
}
窗体Load代码:
private void LockScreenForm_Load(object sender, EventArgs e)
{
MusicePlayer musicTest = new MusicePlayer();
musicTest.FileName = “E:\KuGou\[徐誉滕]做我老婆好不好-徐誉滕.mp3”;
musicTest.play();
}
如果不是通过定时器打开窗体音乐是可以播放的。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace WindowsApplication19
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
Form2 f2 = new Form2();
f2.Show();
timer1.Enabled = true;
}
}
}
Form2的load事件
private void Form2_Load(object sender, EventArgs e)
{
MusicePlayer musicTest = new MusicePlayer();
musicTest.FileName = “E:\KuGou\[徐誉滕]做我老婆好不好-徐誉滕.mp3”;
musicTest.play(); }
这样就可以了啊
{
timer1.Enabled = false;
Form2 f2 = new Form2();
f2.ShowDialog();
f2.close();
timer1.Enabled = true;
}
如果要看走没走那个窗体的Load加一个断点就晓得了,可是上面的问题,还请高人解释
System.Timers.Timer和System.Threading.Timer非常类似,它们是通过.NET Thread Pool实现的,轻量,计时精确,对应用程序、消息没有特别的要求。System.Timers.Timer还可以应用于WinForm,完全取代上面的Timer控件。它们的缺点是不支持直接的拖放,需要手工编码。 http://shansun123.javaeye.com/blog/550155