如果我点击按钮,该标志将为true,并且在timer1 tick事件中,它将改变计数并计数。如果我再次点击相同的按钮,它将倒计时。没有重置计时器只是为了保持从点数上升或下降取决于标志。如果为True,它应该计数,如果为false,它应该倒计时。 (该表单顶部的标志设置为false)。
现在它的方式只是倒数(下)。
这是timer1 tick事件:
private void timer1_Tick(object sender, EventArgs e)
{
if (hours == 0 && mins == 0 && secs == 0)
{
timer1.Stop();
MessageBox.Show(new Form() { TopMost = true }, "Times up!!! :P", "Will you press OK? :P", MessageBoxButtons.OK, MessageBoxIcon.Information);
textBox1.Text = "00";
textBox2.Text = "00";
textBox3.Text = "00";
textBox3.Enabled = true;
textBox2.Enabled = true;
textBox1.Enabled = true;
button1.Enabled = true;
lblHr.Text = "00";
lblMin.Text = "00";
lblSec.Text = "00";
button2.Enabled = false;
button3.Enabled = false;
}
else
{
if (secs < 1)
{
secs = 59;
if (mins < 1)
{
mins = 59;
if (hours != 0)0
hours -= 1;
}
else mins -= 1;
}
else secs -= 1;
if (hours > 9)
lblHr.Text = hours.ToString();
else lblHr.Text = "0" + hours.ToString();
if (mins > 9)
lblMin.Text = mins.ToString();
else lblMin.Text = "0" + mins.ToString();
if (secs > 9)
lblSec.Text = secs.ToString();
else lblSec.Text = "0" + secs.ToString();
}
}
private void button4_Click(object sender, EventArgs e)
{
count_up_down = true;
}
答案 0 :(得分:4)
首先,将时间表示从小时,分钟和秒更改为普通seconds
。通过将秒数除以60和3600来设置标签中的文本,如下所示:
int hours = totalSeconds / 3600;
int minutes = totalSeconds / 60;
int seconds = totalSeconds % 60;
添加一个名为step
的整数实例变量,并将其设置为负1
:
private int step = -1;
点击按钮,更改step
变量的符号:
step = -step;
现在您需要做的就是将代码更改为使用totalSeconds += step
而不是xyz -= 1
- 而且您已完成了!
答案 1 :(得分:0)
DateTime start = DateTime.MinValue;
TimeSpan oldTime = TimeSpan.Parse("00:00:00");
tm = new Timer();
tm.Tick += new EventHandler(tm_Tick);
void tm_Tick(object sender, EventArgs e)
{
TimeSpan runTime = DateTime.Now - start;
lblTimer.Text = string.Format("{1:D2}:{2:D2}:{3:D2}",
runTime.Days,
runTime.Hours,
runTime.Minutes,
runTime.Seconds);
}
希望上面的代码可以帮到你。