簡體   English   中英

如何使用DispatcherTimer顯示偶數/奇數秒

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM