C# 如何从点击按钮开始倒计时事件?

C# 如何从点击按钮开始倒计时事件?,c#,visual-studio,timer,C#,Visual Studio,Timer,因此,我编写了一个计时器,您可以通过单独的按钮单击事件来增加小时、分钟和秒。我的目标是设置小时、分和秒,当我单击开始按钮时,代码将开始倒计时。目前,我似乎只能在时间一增加就开始倒计时。我尝试过的任何东西都无法与开始按钮单击事件一起工作,有什么想法吗 public partial class Form1 : Form { System.Windows.Forms.Timer timer; TimeSpan countdownClock = TimeSpan.Zero; pu

因此,我编写了一个计时器,您可以通过单独的按钮单击事件来增加小时、分钟和秒。我的目标是设置小时、分和秒,当我单击开始按钮时,代码将开始倒计时。目前,我似乎只能在时间一增加就开始倒计时。我尝试过的任何东西都无法与开始按钮单击事件一起工作,有什么想法吗

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)
    {

    }
}
公共部分类表单1:表单
{
System.Windows.Forms.Timer;
TimeSpan倒计时时钟=TimeSpan.Zero;
公共表格1()
{
初始化组件();
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
添加timetoclock(TimeSpan.FromSeconds(10));
}
私有void Form1\u加载(对象发送方、事件参数e)
{
timer=new System.Windows.Forms.timer();
timer.Interval=(int)TimeSpan.FromSeconds(1).total毫秒;
timer.Tick+=ontimeent;
显示时间();
}
私有void DisplayTime()
{
lblTime.Text=倒计时时钟.ToString(@“hh\:mm\:ss”);
}
private void OnTimeEvent(对象发送方,EventArgs e)
{
//从倒计时钟中减去我们的时间间隔
countdownClock=countdownClock.Subtract(TimeSpan.frommissions(timer.Interval));
如果(countdownClock.total毫秒是您的

// Start the timer if it's stopped
if (!timer.Enabled) timer.Start();
您总是以时间递增的方式启动时钟。请单击btn启动时钟。

这是您的选择

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

您总是在时间递增时启动时钟。在btn单击时启动时钟。

有没有办法在计时器启动后通过添加另一个按钮重置所有值?只需在新的单击事件处理程序中执行此操作:)`countdownClock=TimeSpan.Zero;并且停止你的时间运行多次,这会让你尝试一下!为另一个问题道歉。我现在正在尝试使用时间间隔减量,以便它更快地计数,我的代码允许这样做吗?是的,它允许:)只要尝试有一种方法可以在计时器启动后通过添加另一个值重置所有值,但是ton?只需在一个新的点击事件处理程序中执行:)`countdownClock=TimeSpan.Zero;并停止您的时间运行次数过多,将尝试一下!为另一个问题道歉。我现在正在尝试使用时间间隔减量,以便它更快地计数,我的代码是否允许此操作?是的,它允许:)请尝试