我使用下面的代码以 hh:mm:ss
格式显示剩余时间,例如,如果持续时间为 30min
,它将显示如下 00: 30:00
并在 1 分钟后显示 00:29:00
,我怎样才能显示剩余的秒数并相应地减少它们。
编辑
我试过 timer1.Interval = 1000;
和
examTime = examTime.Subtract(TimeSpan.FromSeconds(1));
但它没有显示每秒减少的秒数,我该怎么做?
public SubjectExamStart()
{
InitializeComponent();
examTime = TimeSpan.FromMinutes(double.Parse(conf[1]));
label1.Text = examTime.ToString();
timer1.Interval = 60 * 1000;
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
if (sender == timer1)
{
if (examTime.TotalMinutes > 0)
{
examTime = examTime.Subtract(TimeSpan.FromMinutes(1));
label1.Text = examTime.ToString();
}
else
{
timer1.Stop();
MessageBox.Show("Exam Time is Finished");
}
}
}
最佳答案
您需要从 TimeSpan.FromSeconds
中减去,而不是减去 TimeSpan.FromMinutes
public SubjectExamStart()
{
InitializeComponent();
examTime = TimeSpan.FromSeconds(double.Parse(conf[1]));
label1.Text = examTime.ToString();
timer1.Interval = 1000;
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
if (sender == timer1)
{
if (examTime.TotalMinutes > 0)
{
examTime = examTime.Subtract(TimeSpan.FromSeconds(1));
label1.Text = examTime.ToString();
}
else
{
timer1.Stop();
MessageBox.Show("Exam Time is Finished");
}
}
}
如果你想在分配给标签时格式化时间跨度值......你可以使用下面..
label1.Text = examTime.ToString(@"dd\.hh\:mm\:ss");
关于c# - 如何在 Timer Tick 事件上使用 TimeSpan 显示秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19679570/