2016-01-04 63 views
3

我在這裏有一個倒數計時器,有沒有反正可以改善它,使它看起來更好顯示01:09而不是1:9,並且00: 09而不是00:9以下是code.I需要一些指導如何做到這一點。如何改進WPF倒數計時器的時間格式

private int time = 120; 
private System.Windows.Threading.DispatcherTimer Timer; 

public MainWindow() 
{ 
    InitializeComponent(); 
    Timer = new System.Windows.Threading.DispatcherTimer(); 
    Timer.Interval = new TimeSpan(0, 0, 1); 
    Timer.Tick += Timer_tick; 
    Timer.Start(); 

} 


void Timer_tick(object sender, EventArgs e) 
{ 
    if (time > 0) 
    { 
    if (time <= 10) 
    { 
     if (time % 2 == 0) 
     { 
      tbTime.Foreground = Brushes.Red; 
     } 
     else 
     { 
      tbTime.Foreground = Brushes.White; 
     } 


     time--; 

     tbTime.Text = string.Format("00:0{0}:0{1}", time/60, time % 60); 

    } 

    else 
    { 
     time--; 
     tbTime.Text = string.Format("00:0{0}:{1}", time/60, time % 60); 


    } 

    } 
    else 
    { 
    Timer.Stop(); 
    } 
} 
+0

看看'DateTime'和'ToString',他們會幫助你很大 – Ian

回答

3

如果使用日期時間來表示「時間」,你可以很容易地像

time.ToString("hh:mm"); 

如果你堅持要用整數顯示出來,你也可以使用這樣的:

string.Format("00:{0:00}:{1:00}", time/60, time % 60); 

或者按照Ian在他的回答中所建議的使用「d2」

string.Format("00:{0:d2}:{1:d2}", time/60, time % 60); 
+0

謝謝你的幫助,這真的很有用 – Helpkelp

1

您可能想要純粹處理xaml上的格式,並在視圖模型中使用時間範圍而不是日期時間,除非您想使用具有值轉換器的觸發器來檢查TotalSeconds是否爲偶數或奇數。

<TextBlock Width="100" Height="24" ForeGround={Binding ForeBrush}> 
    <TextBlock.Text> 
     <MultiBinding StringFormat="{}{0:00}:{1:00;00}"> 
      <Binding Path="MyTimeSpan.Minutes"/> 
      <Binding Path="MyTimeSpan.Seconds"/> 
     </MultiBinding> 
    </TextBlock.Text> 
</TextBlock>