2016-04-29 46 views
0

嗯,這個問題是與此相關的,所以你們能更好地理解它如何建立一個先進的倒數計時器

我的回答是:

txtAtiv.Text = dataGridView1.Rows[0].Cells[1].Value + ""; 

string value = dataGridView1.Rows[0].Cells[2].Value + ""; 
lblLeft.Text = value.Split(' ')[1]; 
textStatus.Text = ""; 

DateTime timeConvert; 
DateTime.TryParse(value, out timeConvert); 

double time; 
time = timeConvert.TimeOfDay.TotalMilliseconds; 

var timeSpan = TimeSpan.FromMilliseconds(time); 

lblSoma.Text = timeSpan.ToString(); 
timer2.Start(); 

根據我在那裏寫的答案,我想知道是否有一種方法可以將它應用於計時器,並且DataGrid值(轉換後的值)變成計時器值。所以如果我按下一個按鈕他們開始倒計時。

我試圖插入此代碼的計時器內:

private void timer2_Tick(object sender, EventArgs e) 
{ 
    string timeOp = dataGridView1.Rows[0].Cells[2].Value + ""; 
    DateTime timeConvert; 
    DateTime dateTime = DateTime.Now; 
    DateTime.TryParse(timeOp, out timeConvert); 

    double time; 
    time = timeConvert.TimeOfDay.TotalMilliseconds; 
    var timeSpan = TimeSpan.FromMilliseconds(time); 

    if (time > 0) 
    { 
     time = time - 1000; //(millisec) 
     lblCountdown.text = time.ToString(); 
    } 
} 

沒有倒計時或什麼,是否有人有我應該怎麼辦,或者爲什麼它不工作的想法?

+0

你能顯示代碼,你開始計時器? –

+0

當我按下按鈕時會發生這種情況。忘了把它放在它上面,但仍然沒有任何反應。 – MattDAVM

+0

你還能展示它嗎?你應該仍然可以編輯你的問題。 –

回答

2

time的值永遠不會改變,因爲您每次都重新創建一次。

要解決這個問題,您必須聲明您在Tick事件之外遞減的變量。

把你的形式這兩個變量:

private int milliSecondsLeft = 0; 
private bool timeSet = false; 

然後改變「滴答」事件這樣的:

private void timer2_Tick(object sender, EventArgs e) 
{ 
    if (!timeSet) // only get the value once 
    { 
     string dateTimeFromGrid = "4/29/2016 5:00:00 AM"; //hardcoded for simplicity, get the string from your grid 
     DateTime fromGrid; 
     DateTime.TryParse(dateTimeFromGrid, out fromGrid); 
     milliSecondsLeft = (int)fromGrid.TimeOfDay.TotalMilliseconds; 
     timeSet = true; 
    } 

    milliSecondsLeft = milliSecondsLeft - 100; // timer's default Interval is 100 milliseconds 

    if (milliSecondsLeft > 0) 
    { 
     var span = new TimeSpan(0, 0, 0, 0, milliSecondsLeft); 
     lblCountdown.Text = span.ToString(@"hh\:mm\:ss"); 
    } 
    else 
    { 
     timer2.Stop(); 
    } 
} 

確保

+0

我會檢查一下並給你一個反饋。 – MattDAVM

+0

它工作完美!謝謝! – MattDAVM

+1

很高興聽到。請花一些時間瞭解*爲什麼*它的工作原理,這會在以後節省您的頭痛。 – DrewJordan