[英]Multiple countdown timer + button
注意:此問題也與此相關
我有一個計時器,該計時器由一個按鈕激活,該按鈕可啟動假定活動的倒計時。 但是我有一個問題,當我再次按下相同的按鈕時,程序必須使用另一時間(在數據網格內指定)並再次開始倒計時,如果我再次按下該按鈕,則需要進行其他操作,依此類推。
我應該使用多個計時器,還是可以使用相同的計時器,但是如果我按下按鈕,可以使用新的(“重置”)值嗎?
(如果你們希望我顯示更多代碼,請告訴我我將在此處發布)
private bool timeSet2 = false;
int f = 1;
private void timer3_Tick(object sender, EventArgs e)
{
DateTime timeConvert;
DateTime dateTime = DateTime.Now;
string timeOp = dataGridView1.Rows[f].Cells[2].Value + "";
f++;
if (!timeSet2) // only get the value once
{
DateTime.TryParse(timeOp, out timeConvert);
milliSecondsLeft = (int)timeConvert.TimeOfDay.TotalMilliseconds;
timeSet2 = true;
}
milliSecondsLeft = milliSecondsLeft - 1000;
if (milliSecondsLeft > 0)
{
var span = new TimeSpan(0, 0, 0, 0, milliSecondsLeft);
lblLeft.Text = span.ToString(@"hh\:mm\:ss");
}
else
{
timer3.Stop();
}
我需要在此處安裝一個按鈕,因此如果按下該按鈕,程序將開始另一個倒計時。 但是我不知道是否需要為此再花時間。
您可以使用相同的計時器,並在每次倒計時時將其重置。 但是我認為您誤解了計時器的功能。 每當定時器的時間間隔過去時,就會發生timer_Tick
事件。 在按鈕單擊事件上更新milliSecondsLeft
變量。
您必須將一些代碼移到button_Click
事件。
private void button1_Click(object sender, EventArgs e)
{
milliSecondsLeft = Convert.ToInt32(dataGridView1.Rows[f].Cells[2].Value)*1000;
f++;
timer3.Start();
}
您的timer_Tick
事件將如下所示:
private void timer3_Tick(object sender, EventArgs e)
{
milliSecondsLeft = milliSecondsLeft - 1000;
if (milliSecondsLeft > 0)
{
var span = new TimeSpan(0, 0, 0, 0, milliSecondsLeft);
lblLeft.Text = span.ToString(@"hh\:mm\:ss");
}
else
{
timer3.Stop();
}
}
其他一些事情:
dataGridView
int f = 1;
dataGridView
的第二列開始嗎int f = 1;
dataGridView
的倒計時時間以秒為單位。 但是也許您的代碼適合您的目的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.