[英]How to show even/odd seconds with DispatcherTimer
我有兩個文本塊,它們使用DispatcherTimer
顯示計時器的值。 我需要每2秒更新一次它們的值,一個塊只能顯示偶數秒,另一個只能顯示奇數秒。
視圖
<Grid>
<TextBlock Name="textTimeMiddle"
Text="{Binding TestTimer.TimeFormat, UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock Name="textTimeBottom"
Text="{Binding TestTimer.TimeFormat, UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
模型
public class TestTimer : INotifyPropertyChanged
{
public TestTimer()
{
Timer = new DispatcherTimer();
Timer.Interval = new TimeSpan(0, 0, 1);
Timer.Tick += TimerTick;
Timer.Start();
}
private DispatcherTimer Timer;
private string _timeFormat;
public string TimeFormat
{
get { return _timeFormat; }
set
{
_timeFormat = value;
OnPropertyChanged();
}
}
private int _seconds;
public int Seconds
{
get { return _seconds; }
set
{
if(value > -1 && value < 61)
{
_seconds = value;
OnPropertyChanged();
}
}
}
private int _minutes;
public int Minutes
{
get { return _minutes; }
set
{
if (value > -1 && value < 61)
{
_minutes = value;
OnPropertyChanged();
}
}
}
private int _hours;
public int Hours
{
get { return _hours; }
set
{
if (value > -1 && value < 25)
{
_hours = value;
OnPropertyChanged();
}
}
}
private void TimerTick(object sender, EventArgs e)
{
if (Seconds > 59)
{
Seconds = 0;
Minutes++;
if (Minutes > 59)
{
Minutes = 0;
Hours++;
if (Hours > 23)
Hours = 0;
}
}
Seconds++;
TimeFormat = string.Format("{0:00}:{1:00}:{2:00}",
Hours, Minutes, Seconds);
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged([CallerMemberName]string prop = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
}
}
我想你的秒數不超過60秒。 因此,此代碼應該起作用。
int i = 16;//your seconds number here in the place of i
if (i % 2 == 0)
{
string eventextbox = i.ToString(); //your even numbers textbox.text
//Console.Read();
Console.WriteLine("even = " + eventextbox);
}
else
{
string oddtextbox = i.ToString();//Odd Number textbox.text
// Console.Read();
Console.WriteLine("odd = " + oddtextbox);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.