我在这里有一个倒数计时器,是否有任何改进它使它看起来更好的时间显示01:09而不是1:9在显示和00:09而不是00:9下面是代码我需要一些如何做的指导。
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 :(得分:3)
如果您使用DateTime来表示“时间”,您可以轻松地将其显示为
persistAllSettings
如果你坚持使用整数,你可以改用:
time.ToString("hh:mm");
或使用Ian在答案中建议的“d2”
string.Format("00:{0:00}:{1:00}", time / 60, time % 60);
答案 1 :(得分:1)
您可能希望纯粹在xaml上处理格式并在viewmodel中使用timepan而不是datetime,从viewmodel绑定画笔可能也不错,除非您想使用带值转换器的触发器来检查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>