怎么在一个lable中实现一个数字(每隔一秒数字减1)或者是一个时间的倒计时

解决方案 »

  1.   

    timer()//事件,设成1000ms
    {
    int a,b;
    a=10;b=0;
    b--;
    if(b==-1)
    {
    b=59;
    a--
    }
    lable1.text=a.ToString()+":"+b.ToString();
    }
      

  2.   

    不是有定时器控件吗?
    设置定时器interval 为一秒,在timer事件里改写lable值
      

  3.   

    http://hi.baidu.com/wqk1025/blog/item/742770c74f3f54d9d1006094.html
      

  4.   

    一个简单的例子private void Form1_Load(object sender, EventArgs e)
    {
        timer1.Interval = 1000;
        timer1.Start();
    }
    DateTime dst = new DateTime(2009, 1, 1);
    TimeSpan ts;
    private void timer1_Tick(object sender, EventArgs e)
    {
        ts = dst - DateTime.Now;
        label1.Text = "距离年元旦还有:" + ts.Days + "天" + ts.Hours + "小时" + ts.Minutes + "分" + ts.Seconds + "秒";
    }
      

  5.   

    定义一个变量 给她个初始值
     然后用TIMER控件或者THREAD都可以的 每一秒执行一次
      不就++或--的操作么..
    如果是当前时间的话..这样就不行了,因为每59秒要进位和清空
      

  6.   

     private int a=10;//定时的分数
            private int b=0;//定时的秒数
            private void timer1_Tick(object sender, EventArgs e)
            {
                
                b--;
                if (b == -1)
                {
                    b = 59;
                    a--;
                    if (a < 0)
                    {
                        timer1.Enabled = false;
                        MessageBox.Show("时间到");
                        return;
                    }
                }
                label1.Text = a.ToString() + ":" + b.ToString();
            }
    送佛送到西吧,给你放到VS里调试过了这个
    别忘记设置interval=1000就行了
      

  7.   

    我想要的结果就像我们在用shutdown -s -t关机时,弹出一个警告框,说系统将在什么时间关机,
    而我现在就卡在了,已经得到这个倒计时的时间,可怎么让它随着时间-1这个数字也-1
    给我个简单的代码吧
      

  8.   

            private void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e)
            {
                CheckForIllegalCrossThreadCalls = false;
                int i =(int) Convert.ToDateTime("2008-10-01 00:00:00").Subtract(DateTime.Now).TotalSeconds;
                label1.Text = "距2008年10月1日还有:" + i.ToString() + "秒";
            }        private void Form1_Load(object sender, EventArgs e)
            {
                System.Timers.Timer aTimer = new System.Timers.Timer(40);
                aTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent);
                aTimer.Enabled = true;
            }
      

  9.   

    你想要前面加个负号?
     "-"+I.TOSTRING();
     或者用连接的方法
       为什么一楼的只能到10:59
     因为她的初始值你自己看看啊  要写具体 就再添加一个参数
       范围 到24小时 以此类推
     需要更久就继续添加变量 具体代码参考1楼足够了
     不就是变量的使用吗..
      

  10.   

    谢谢楼上各位了,也许自己愚钝,你们贴的代码我都试了,可以,通过了
    我本来想的是通过线程来做的,得到的一个时间差,通过timers来实现,那么我的想法有错吗
    是否可以通过线程来完成啊
      

  11.   


    namespace WindowsFormsApplication11
    {
        public partial class Form1 : Form
        {
            DateTime EndTime, BackTime;
            public Form1()
            {
                InitializeComponent();
                EndTime = DateTime.Now;            // BackTime = EndTime.AddHours(1);  // 1小时后关机
                // BackTime = EndTime.AddSeconds(30);   // 30秒后关机            BackTime = EndTime.AddMinutes(1); // 1分钟后关机
            }        private void timer1_Tick(object sender, EventArgs e)
            {
                TimeSpan TS = BackTime - EndTime;
                if (TS.TotalSeconds == 0)
                {
                    MessageBox.Show("关机了!");
                    // 关机...
                }
                BackTime = BackTime.AddSeconds(-1);
                label1.Text = (BackTime - EndTime).ToString();
            }
        }
    }
      

  12.   

    if (TS.TotalSeconds == 0)
                {
                    MessageBox.Show("关机了!");
    忘了要加
    timer1.Enabled=false;
                    // 关机...
                }
      

  13.   

    是否可以通过线程来完成啊
    --------------------
    线程当然也可以,但这个线程的循环你怎么控件,不也是要间隔一定的时候循环一次吗?还不如使用Timer更直接。
      

  14.   

    在线程里处理的话,可以用通过delay或sleep来控制时间间隔.
      

  15.   


    timer控件本身就是一条新的线程。
    像这种计时的任务,大家的第一反应都是用timer自己写线程来实现当然也行