本人刚学C#,近日做了一个winform程序,程序是在一个窗体中调用一个定时器,然后定时器事件中打开另外一个窗体,其中另外窗体load事件中有播放MP3音乐的代码;此时通过定时器打开的窗体不可以播放音乐;但是在开始那个窗体中通过按钮打开这个有音乐的窗体时能够播放音乐。也就是说同一个窗体,load事件中有播放音乐的代码,通过定时器打开则音乐不了;通过其他窗体打开,则音乐可以播放。请各位大牛们给个指点这是为什么?

解决方案 »

  1.   

    把窗体的Load事件和定时器相关代码发上来看看
      

  2.   

    timer是线程的关系么?断点,执行了么。
      

  3.   

    定时器事件代码:
    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();
            }   
    如果不是通过定时器打开窗体音乐是可以播放的。    
      

  4.   

    楼主应该建立再添加一个winform窗体,在那个窗体的load事件中写放音乐的代码:
    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();        }
    这样就可以了啊
      

  5.   

     private void timer1_Tick(object sender, EventArgs e)
      {
      timer1.Enabled = false;
      Form2 f2 = new Form2();
      f2.ShowDialog();
    f2.close();
      timer1.Enabled = true;
      }
      

  6.   

    以上的方法我最后找到了,哈哈...谢谢各位。不过这是什么原因呢..用System.Timers.Timer的定时器不能播放,而System.Windows.Forms.Timer而已播放呢?
      

  7.   

    因为啊你啊没在模态的那个窗体load事件里写东西啊
      

  8.   

    System.Timers.Timer是用eclapse事件的
      

  9.   


    如果要看走没走那个窗体的Load加一个断点就晓得了,可是上面的问题,还请高人解释
      

  10.   

    System.Windows.Forms.Timer是应用于WinForm中的,它是通过Windows消息机制实现的,类似于VB或Delphi中的Timer控件,内部使用API     SetTimer实现的。它的主要缺点是计时不精确,而且必须有消息循环,Console     Application无法使用。     
      
    System.Timers.Timer和System.Threading.Timer非常类似,它们是通过.NET     Thread     Pool实现的,轻量,计时精确,对应用程序、消息没有特别的要求。System.Timers.Timer还可以应用于WinForm,完全取代上面的Timer控件。它们的缺点是不支持直接的拖放,需要手工编码。 http://shansun123.javaeye.com/blog/550155
      

  11.   

    timer 事件的的属性错了吧