2013-08-29 53 views
0

我正在使用秒錶。如果我選擇啓動按鈕,計時器運行良好。但是當我用下面的代碼再次按下按鈕時。然後計時器從00:00:00開始。我想暫停計時器,如果按下它,它應該再次從暫停時間開始,而不是從開始時間開始。如何做這個任務?任何其他想法也被接受。如何讓秒錶在Windows Phone中暫停?

private void Timer_Tick(object sender, EventArgs e) 
    { 
     TimeSpan runTime = TimeSpan.FromMilliseconds(System.Environment.TickCount - _startTime); 
     timeLabel.Text = runTime.ToString(@"hh\:mm\:ss"); 
    } 

    private void StartButton_Click(object sender, RoutedEventArgs e) 
      { 
       if (_timer.IsEnabled) 
       { 
       _watcher.Stop(); 
       _timer.Stop(); 
       StartButton.Content = "Start"; 
       } 
       else 
       { 
       _watcher.Start(); 
       _timer.Start(); 
       _startTime = System.Environment.TickCount; 
       StartButton.Content = "Stop"; 
       } 
      } 
+0

是否在StartButton_Click中設置_startTime變量一次?如果你想計算兩次按鈕點擊之間的時間間隔,你只需要一個秒錶(這裏你使用了兩個我認爲是計時器和觀察者)。一次點擊將啓動它,其他點擊將停止它並將檢查Elapsed屬性以獲得時間跨度。 Stopwatch.Start()啓動或恢復秒錶不重置它 – Nitin

+0

@nit:監視器屬於GeoCoordinateWatcher。當我按下它時,應用會停止跟蹤位置。觀察者與定時器不同。 –

回答

0

只需點擊停止按鈕並在點擊開始按鈕時更改您的代碼即可獲取計時器時間。

開始按鈕: 檢查_refreshTimeTimer不爲空 以及

if(_refreshTimeTimer != null){ 
     Timer t = new timer(_refreshTimeTimer); 
     // Start new timer 
     _refreshTimeTimer = null; 
}else{ 
     if (_timer.IsEnabled) 
      { 
      _watcher.Stop(); 
      _timer.Stop(); 
      StartButton.Content = "Start"; 
      } 
      else 
      { 
      _watcher.Start(); 
      _timer.Start(); 
      _startTime = System.Environment.TickCount; 
      StartButton.Content = "Stop"; 
      } 
} 

停止按鈕:

_refreshTimeTimer = _timer.getTime(); 
+0

你可以寫這簡短的請。我得到錯誤。 –

-1

您必須聲明調度時間,運行計時器在什麼時候你想暫停然後開始第一次添加調度程序計時器值,它將從暫停時間之前開始。