【问题标题】:incrementing timer in windows phonewindows phone 中的递增计时器
【发布时间】:2013-04-02 15:55:43
【问题描述】:

我在 Windows 手机上制作计时器应用时遇到问题。 我将文本框设置为 00:00:00 并且我试图每秒增加一次,但在第一秒之后它不会再做任何事情了。我相信这是一个简单的解决方法,并且非常感谢任何帮助。谢谢

公共主页() { 初始化组件();

        DispatcherTimer timer = new DispatcherTimer();
        timer.Interval = TimeSpan.FromSeconds(1);
        timer.Tick += OnTimerTick;
        timer.Start();
    }

    void OnTimerTick(object sender, EventArgs args)
    {
        txtTimer.Text = DateTime.Now.ToString();
    }

    private void btnStartClick(object sender, EventArgs e)
    {

        DispatcherTimer timer = new DispatcherTimer();

        timer.Tick +=
            delegate(object s, EventArgs args)
            {
                TimeSpan time = new TimeSpan(0);
                time += TimeSpan.FromSeconds(1);                   
                this.timenow.Text = string.Format("{0:D2}:{1:D2}:{2:D2}", time.Hours, time.Minutes, time.Seconds);
            };


        timer.Interval = new TimeSpan(0, 0, 1); 
        timer.Start();

    }

【问题讨论】:

  • 欢迎来到 StackOverflow。你试过调试你的代码吗?

标签: c# timer windows-phone


【解决方案1】:
            TimeSpan time = new TimeSpan(0);
            time += TimeSpan.FromSeconds(1);                   
            this.timenow.Text = string.Format("{0:D2}:{1:D2}:{2:D2}", time.Hours, time.Minutes, time.Seconds);

每次计时器计时都会创建time 变量。因此,每次您将一秒添加到零时间跨度。您需要从委托中提取它。通常,您会将其设为类字段。

【讨论】:

  • 感谢您的回复。所以我必须从代​​表上面提取它,以便它会继续添加一个而不是重新开始?我将如何去做这件事。抱歉,这可能很容易,但我才刚刚开始
  • 只需在类中添加TimeSpan time;(不在任何函数中)。在btnStartClick 中添加time = new TimeSpan(0);,然后再启动计时器。删除我复制到答案的第一行代码(委托的第一行)。
  • 非常感谢您的回复,现在一切正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多