3

我正在尝试从 1 分钟开始做一个简单的倒数计时器,它显示在按钮文本中。当按下按钮时,我只想让它倒计时到 0,显示“时间”。我一直在阅读我能找到的所有帖子,试图弄清楚如何做到这一点,但不能。有人可以告诉我我做错了什么。

这是在 Visual c# windows phone 应用程序中。我希望我的帖子正确显示,这是我第一次在这个网站上提问,我是新手。提前感谢您的任何建议。

void bTime_Click(object sender, RoutedEventArgs e)
    {
        DispatcherTimer timer1 = new DispatcherTimer();
        timer1.Interval = TimeSpan.FromSeconds(60);
        timer1.Tick += new EventHandler(timer_Tick);
        timer1.Start();
    }

    int tik = 60;
    void timer_Tick(object sender, EventArgs e)
    {
        bTime.Content = timer.ToString();
        if (tik > 0)
            Countdown.Text = (timer--).ToString();
        else
            Countdown.Text = "Times Up";
        throw new NotImplementedException();
    }
4

2 回答 2

9

首先,摆脱throw new NotImplementedException. 其次,您需要减少tik。所以是这样的:

    DispatcherTimer timer1 = new DispatcherTimer();
    private void button1_Click(object sender, RoutedEventArgs e)
    {
        timer1.Interval = new TimeSpan(0, 0, 0, 1);
        timer1.Tick += new EventHandler(timer1_Tick);
        timer1.Start();
    }

    int tik = 60;
    void timer1_Tick(object sender, EventArgs e)
    {
        Countdown.Text = tik + " Seconds Remaining";
        if (tik > 0)
            tik--;
        else
            Countdown.Text = "Times Up";
    }

我已经改变了间隔,我每秒都在减少 tik。很好很简单。希望能帮助到你。如果你不明白,请告诉我。

于 2012-06-26T01:39:02.350 回答
3

你的代码有什么问题?对我来说,它看起来像这些部分:

bTime.Content = timer.ToString();

bTime.Content = timer.ToString();

首先,我什至不知道可变定时器是什么。它应该是timer1吗?

tik 永远不会被减去,并且永远保持在 60。

你为什么不把你的代码改成这样:

DispatcherTimer timer1 = new DispatcherTimer();
void bTime_Click(object sender, RoutedEventArgs e)
{
    timer1.Interval = TimeSpan.FromSeconds(60);
    timer1.Tick += new EventHandler(timer_Tick);
    timer1.Start();
}

int tik = 60;
void timer_Tick(object sender, EventArgs e)
{
    bTime.Content = tik.ToString();
    if (tik > 0)
        Countdown.Text = (tik--).ToString();
    else
    {
        Countdown.Text = "Times Up";
        timer1.Stop();
    }
    throw new NotImplementedException();
}
于 2012-06-26T01:36:53.087 回答