在c# WinForm 中,定时弹出一个窗口后,如何让它在5秒后自动消失。我用了两个Timer,但是不好控制时间。
timer1的事件是定时弹出一个窗口,然后窗口弹出后,要让它5秒后自动消失。怎么做?谢谢!~~
因分不多,只能给30

解决方案 »

  1.   

    利用多线程控制timer,利用sleep来控制时间,时间到让其隐藏就可以了
      

  2.   

    你在一个窗体弹出的加载事件中 启动一个计时器,这个计时器用于计算时间,当时间过去5秒钟的时候,停到计时器,并且this.Dispose(),
    释放内存的窗体对象就可以了 
      

  3.   

    我启动另一个计时器,时间间隔控制不好。不知道问题在哪?

    代码
    private void Timer_TimesUp(object sender, System.Timers.ElapsedEventArgs e)
            {
                if (this.InvokeRequired)
                {
                    setSafeElapsed s = new setSafeElapsed(Timer_TimesUp);
                    this.Invoke(s, new object[] { sender, e });
                }
                else
                {
                    IsShowForm(true);
                    //5'自动消失
                    AutoHideFrom(5);
                }
            }
            //自动消失
            private void AutoHideFrom(int timer)
            {
                System.Timers.Timer timerStop = new System.Timers.Timer();
                timerStop.Enabled = false;
                timerStop.AutoReset = false;
                timerStop.Interval = (timer * 1000);
                timerStop.Enabled = true;
                timerStop.Elapsed += new System.Timers.ElapsedEventHandler(HideForm);
                timerStop.Start();            
            }
            private void HideForm(object sender, System.Timers.ElapsedEventArgs e)
            {
                if (this.InvokeRequired)
                {
                    setSafeElapsed s = new setSafeElapsed(Timer_TimesUp);
                    this.Invoke(s, new object[] { sender, e });
                }
                else
                {
                    IsShowForm(false);
                }
            }
      

  4.   

    isShowForm private void IsShowForm(bool isShow)
            {
                if (isShow)
                {
                    if (WindowState == FormWindowState.Minimized)
                    {
                        Visible = true;
                        WindowState = FormWindowState.Normal;
                    }
                    else
                    {
                        WindowState = FormWindowState.Minimized;
                        Visible = false;
                    }
                }
                else
                {
                    if (WindowState == FormWindowState.Normal)
                    {
                        WindowState = FormWindowState.Minimized;
                        Visible = false;
                    }
                    else
                    {
                        WindowState = FormWindowState.Minimized;
                        Visible = false;
                    }
                }
            }
      

  5.   

    timer_Tick(...)里用Thread.Sleep(5000)
      

  6.   

    class Form1{
        private Timer timer1;
        public Timer Timer1{
        get{return timer1;}
        }
        
        private void Initial(){
        //...其它代码省略
             timer1.Interval = 3000;//form2关闭后第3秒打开新窗体。
        }
        private void timer1_Tick(object sender,System.Timers.ElapsedEventArgs e){
             Form2 form = new Form2(this);
             form.Show();
             timer1.Stop();
        }
    }class Form2{
        private Form1 form1;
        Form2(Form1 form){
            form1 = form;
        }
        private Timer timer1;
        private void Initial(){
        //...其它代码省略
             timer1.Interval = 5000;//form2打开后5秒执行Tick事件(关闭窗体 )
        }
        private void timer1_Tick(object sender,System.Timers.ElapsedEventArgs e){ 
            form1.Timer1.Start();
            this.Close();
        }
    }
      

  7.   

           System.Timers.Timer bTimer = new System.Timers.Timer();
            private void NoticeBoard_Load(object sender, EventArgs e)
            {
                bTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);            bTimer.Interval = 1000;
                bTimer.Enabled = true;
            }
            int MinuteCount = 0;
            private void OnTimedEvent(object source, ElapsedEventArgs e)
            {
                lbl_Notice.Text = "超过 5 分钟, " + (30 - MinuteCount) + " 秒后自动关闭";
                MinuteCount++;
                if (MinuteCount == 30)
                { Application.Exit(); }
            }
      

  8.   

    可以定义线程
       也可以定义Timer啊`
    线程就休眠5秒
       Timer就直接设定
      

  9.   

    Thread.Sleep(5000)让弹出窗体消失
      

  10.   

    定义一个Timer 设置间隔时间为5秒
    然后在Timer这个事件中直接写把这个窗口关了,this.form.Close()