一个按钮 我一分钟点一下  我现在这个程序要判断我是不是超过一分钟没点他 如果超过一分钟没点则在文本框中提示我,我接着点则不会有提示 如果我再超过一分钟没点 再提示我一次 循环
这个简单的功能我发现在C#中真的不好实现,C#中的timer不支持重新计时,伤心了,求教

解决方案 »

  1.   

    额  是winform的  人生如梦兄,winform里面timer为什么不能重新计时呢?我想这样,就是timer设置一分钟提醒,如果点击按钮就让timer从0开始计时,可是 实现不了 
      

  2.   

    看来你是知道怎样实现,只是不知道怎样重启定时器计时而已。下面的方法使定时器重启:
    timer.Enable = false;
    timer.Enable = true;
    每按一次按钮就执行一次上面的代码即可。
      

  3.   

    其实我一直用的是这个方法,但是我发现这个方法有问题,有的时候会启动不了定时器,我解释一下吧,我用的是form命名空间的timer也就是控件托进去的,我是用一个单独的线程来处理一个串口接受数据的,串口监听,收到数据进行处理,如果超过一分钟未收到数据,就要提醒我提的问题是这个问题的简化,用的方法和你相同,但是总会出现启动不了定时器,受不了
      

  4.   

    http://www.jiaonan.tv/html/blog/1/24051.htm
      

  5.   

    你试试就知道了,我一直都用它。如果确实不行,那可能是其它问题引起的。
    比如你不应该这样简化你的问题,因为在后台线程中使用 Forms.Timer 类时和在 UI 线程中使用是有些不同的。
      

  6.   

    我不知道你的具体的代码,所以不知道是什么问题。
    不过,通常在后台线程里面使用定时器时,最好使用 System.Threading.Timer 类而不是 System.Windows.Forms.Timer 类。
      

  7.   

    参考一下吧,对你的具体问题不太明白public partial class Form1 : Form
        {
            System.Timers.Timer t;        public Form1()
            {
                InitializeComponent();
            }        private void button2_Click(object sender, EventArgs e)
            {
                Thread th = new Thread(new ThreadStart(time));
                th.IsBackground = true;
                th.Start();
            }        private void time()
            {
                t = new System.Timers.Timer(5000);
                t.Elapsed += new System.Timers.ElapsedEventHandler(CallBack);
                t.Start();
            }        void CallBack(object sender, System.Timers.ElapsedEventArgs e)
            {
                t.Enabled = false;
                settext("请点击button3");
            }        private void settext(string p)
            {
                if (textBox1.InvokeRequired)
                {
                    SetTextHandle sh = new SetTextHandle(settext);
                    textBox1.Invoke(sh, new object[] { p });
                }
                else
                {
                    if(textBox1.Text != p)
                        textBox1.Text = p;
                }
            }        private void button3_Click(object sender, EventArgs e)
            {
                textBox1.Clear();
                t.Enabled = true;
            }
      

  8.   

    方法1:Timer.Enabled置为false接着置为true
    方法2:Timer的Interval设置的小一些,如1000(1s),用一个成员变量记录初始时间,如果当前时间比初始时间多于1分钟,提示;点按钮后再把初始时间设置为当前时间。说明:这是干什么用的,为什么不让它自动点,而是要人点,还要提示?