【发布时间】: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;并停止你的计时器
-
非常感谢,会试一试!
-
为另一个问题道歉。我现在正在尝试减少时间间隔,以便倒计时更快,我的代码是否允许这样做?
-
是的 :) 试试吧
标签: c# visual-studio timer