如何通过单击按钮启动倒数计时器事件?

Posted

技术标签:

【中文标题】如何通过单击按钮启动倒数计时器事件?【英文标题】:How to start a countdown timer event from the click of a button? 【发布时间】:2020-09-09 01:27:35 【问题描述】:

所以我编写了一个计时器,您可以在其中通过单独的按钮单击事件来增加小时、分钟和秒。我的目标是设置小时、分钟和秒,当我单击开始按钮时,代码将开始倒计时。目前,我似乎只能在时间增加后立即倒计时。我尝试过的任何方法都不适用于开始按钮单击事件,有什么想法吗?

public partial class Form1 : Form

    System.Windows.Forms.Timer timer;
    TimeSpan countdownClock = TimeSpan.Zero;
    public Form1()
    
        InitializeComponent();
    

    private void button1_Click(object sender, EventArgs e)
    
        AddTimeToClock(TimeSpan.FromSeconds(10));
    

    private void Form1_Load(object sender, EventArgs e)
    
        timer = new System.Windows.Forms.Timer();
        timer.Interval = (int)TimeSpan.FromSeconds(1).TotalMilliseconds;
        timer.Tick += OnTimeEvent;
        DisplayTime();
    
    private void DisplayTime()
    
        lblTime.Text = countdownClock.ToString(@"hh\:mm\:ss");
    
    private void OnTimeEvent(object sender, EventArgs e)
    
        // Subtract whatever our interval is from the countdownClock
        countdownClock = countdownClock.Subtract(TimeSpan.FromMilliseconds(timer.Interval));

        if (countdownClock.TotalMilliseconds <= 0)
        
            // Countdown clock has run out, so set it to zero 
            // (in case it's negative), and stop our timer
            countdownClock = TimeSpan.Zero;
            timer.Stop();
        

        // Display the current time
        DisplayTime();
    
    private void AddTimeToClock(TimeSpan timeToAdd)
    
        // Add time to our clock
        countdownClock += timeToAdd;

        // Display the new time
        DisplayTime();

        // Start the timer if it's stopped
        if (!timer.Enabled) timer.Start();
    

    private void button2_Click(object sender, EventArgs e)
    
        AddTimeToClock(TimeSpan.FromMinutes(1));
    

    private void button3_Click(object sender, EventArgs e)
    
        AddTimeToClock(TimeSpan.FromMinutes(10));
    

    private void Start_Click(object sender, EventArgs e)
    

    

我也尝试使用此命令添加计时器间隔刻度

私有静态只读 int timeScale = 6

调整 OnTimeEvent 中的 countdownClock,并乘以刻度。

countdownClock = countdownClock.Subtract(timeScale * TimeSpan.FromMilliseconds(timer.Interval));

【问题讨论】:

有没有办法在计时器启动后通过添加另一个按钮来重置所有值? 只需在新的 Click 事件处理程序中执行此操作 :)` countdownClock = TimeSpan.Zero;并停止你的计时器 非常感谢,会试一试! 为另一个问题道歉。我现在正在尝试减少时间间隔,以便倒计时更快,我的代码是否允许这样做? 是的 :) 试试吧 【参考方案1】:

这是你的

// Start the timer if it's stopped
if (!timer.Enabled) timer.Start();

您总是按时间递增开始计时。在 btn 点击时开始计时。

【讨论】:

以上是关于如何通过单击按钮启动倒数计时器事件?的主要内容,如果未能解决你的问题,请参考以下文章

在按钮上显示倒数计时器

如何通过在倒数计时器中按住按钮来添加值

如何让我的倒数计时器重置为每次视图加载时?

如何在Xamarian iOS应用程序中单击按钮后X秒触发事件?

如何在Android中制作倒数计时器?

如何从 Android 应用程序与服务器同步倒数计时器