【发布时间】:2016-08-29 19:04:01
【问题描述】:
我有一个按钮,我按下它就会开始倒计时。 但是,如果我再次按下同一个按钮,计时器必须重置并再次倒计时(我的程序定义了另一个时间,但现在这无关紧要)。
有什么方法可以在同一个 button_click 中进行此重置? 也许检查按钮是否被再次单击,以便我可以重置计时器值?
我有这个计时器滴答声
private int milliSecondsLeft = 0;
private int t = 0;
private bool timeSet = false;
private void timer2_Tick(object sender, EventArgs e)
{
string timeOp = dataGridView1.Rows[t].Cells[5].Value + "";
t++;
DateTime timeConvert;
DateTime dateTime = DateTime.Now;
if (!timeSet)
{
DateTime.TryParse(timeOp, out timeConvert);
milliSecondsLeft = (int)timeConvert.TimeOfDay.TotalMilliseconds;
timeSet = true;
timeSetNxt = false;
}
milliSecondsLeft = milliSecondsLeft - 1000;
if (milliSecondsLeft > 0)
{
var span = new TimeSpan(0, 0, 0, 0, milliSecondsLeft);
lblLeft.Text = span.ToString(@"hh\:mm\:ss");
}
else
{
timer2.Stop();
}
}
还有这个button_click
每次我按下按钮时,它都会转到t++;,然后它会在我的数据网格上读取另一个时间值。这就是为什么它必须重置
int t = 1;
private void btn2_Click(object sender, EventArgs e)
{
timer2.Start();
lblLeft.Text = dataGridView1.Rows[t].Cells[5].Value.ToString();
string value = dataGridView1.Rows[t].Cells[5].Value.ToString();
lblLeft.Text = value.ToString();
t++;
}
【问题讨论】:
-
你的代码在哪里!到目前为止,您尝试过什么?
-
要重置
timer2,只需调用Stop(),然后调用Start()(如果您需要运行“获取值一次”逻辑,然后重置timeSet)。逻辑和问题解释得不是很清楚(例如timer3突然是什么?)。 -
@Sinatr 只是在几次测试中更改了数字,忘记将其更改回原始值,抱歉 D:
-
@Sinatr 我尝试在该问题中使用 Dan 的答案,但它并没有改变我的时间价值。当我多次按下按钮时,我的计时器仍停留在它开始的第一个值上。它不会重置并转到另一个时间值。
标签: c# winforms button timer countdowntimer