2013-04-20 74 views
1

我希望當我點擊一個按鈕時,開始「經過的時間」。我到目前爲止寫入此:DateTime + Timer Tick?

private void timer_Tick(object sender, EventArgs e) 
{ 
    timeCounter++; 
    labelTimer.Text = "Elapsed Time: " + timeCounter.ToString(); 
} 

timer間隔在1000(1秒)。

我要的是這樣的格式化時間:

HH:MM:SS 

,並自動遞增分鐘的時候秒達到60,等了好幾個小時。我應該爲此使用DateTime並每隔1秒添加一秒?

回答

5

你可以使用一個TimeSpan

TimeSpan _elapsed = new TimeSpan(); 

private void timer_Tick(object sender, EventArgs e) 
{ 
    _elapsed = _elapsed.Add(TimeSpan.FromMinutes(1)); 
    labelTimer.Text = "Elapsed Time: " + _elapsed.ToString(); 
} 
+0

我應該在哪裏把'時間跨度_elapsed =新的時間跨度()的聲明;'?在timer_Tick裏面,它表示它不存在於上下文中:O – markzzz 2013-04-20 10:10:27

+0

它應該是現有類的新成員,如果需要,可以將它放在timer_Tick()方法的上面,如我的示例中所示。 – 2013-04-20 10:12:49

+0

我把它放在這裏,但它不起作用:O編輯:'_elasped',錯字:) – markzzz 2013-04-20 10:13:38

1

您可以使用秒錶和它經過的時間創建一個日期時間(和設置它的格式,只要你喜歡)。

Stopwatch s = Stopwatch.StartNew(); 
//Some more operations here... 
s.Stop(); 
DateTime t = new DateTime(s.ElapsedTicks); 

如果你喜歡,你也可以設置秒錶的頻率,以儘量減少資源消耗。

0

你可以使用這樣的簡單的方法:

private void timer_Tick(object sender, EventArgs e) 
{ 
     Stopwatch stopWatch = Stopwatch.StartNew(); 

     // Your logics goes Here 

     stopWatch.Stop(); 
     DateTime time = new DateTime(stopWatch.ElapsedTicks); 
     labelTimer.Text = time.ToString("HH:mm:ss"); 
}