2013-04-20 3 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

А где я должен поставить декларацию 'TimeSpan _elapsed = новый TimeSpan();'? Внутри timer_Tick говорится, что он не существует в контексте: O – markzzz

+0

Он должен быть новым членом вашего существующего класса, вы можете поместить его выше своего метода timer_Tick(), если хотите, как в моем примере. –

+0

Я разместил его здесь, но он не работает: O EDIT: '_elasped', mistype :) – markzzz

1

Вы можете использовать секундомер и это прошло время, чтобы создать DateTime (и установить его формат, как вам нравится).

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"); 
} 
Смежные вопросы