簡體   English   中英

多重倒數計時器+按鈕

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM