簡體   English   中英

倒數計時器中的重置按鈕

[英]Reset button in a countdown timer

我有一個按鈕,我按下它,它開始倒計時。 但是,如果我再次按下相同的按鈕,計時器必須重置並進行另一次倒計時(由我的程序定義另一個時間,但現在這是無關緊要的)。

有沒有什么辦法可以在同一個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++;
}

您可以使用Button的Tag屬性為要創建的邏輯設置標志。 在按鈕單擊事件上

if (btnExample.Tag==0)
{
   btnExample.Tag=1;
   //call startCountDown function
}
else
{ 
   btnExample.Tag=0;
   // call reset
}

顯示您的定時器代碼。 獲得重置次數。 使用下面的代碼。

  int button_clicked = new int(); 

  private void button1_Click(object sender, EventArgs e)
  {
      // How many times you have Reset
      button_clicked++;
      // Your Timer Code
  }

只需點擊一下即可啟動新的計時器。 另外,丟棄最后一個。 您可以使用button_clicked來了解計時器是否已啟動,因此如果button_clicked > 0

我會檢查計時器是否已啟用

if (!timer2.Enabled) StartTimer2();
else ResetTimer2();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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