Wpf 計時器

計時器 源代碼




using System;
using System.Windows;
using System.Windows.Threading;

namespace WpfStopWatch
{
    /// <summary>
    /// MainWindow.xaml 的交互邏輯
    /// </summary>
    public partial class MainWindow : Window
    {
        /// <summary>
        /// 狀態
        /// </summary>
        enum State
        {
            Start,
            Pause,
            End
        }

        /// <summary>
        /// 狀態
        /// </summary>
        State _state = State.End;

        /// <summary>
        /// 計時用
        /// </summary>
        TimeSpan _timeSpan = new TimeSpan(0,0,0,0,0);

        public MainWindow()
        {
            InitializeComponent();

            var t = new DispatcherTimer();
            t.Interval = new TimeSpan(0,0,0,1);
            t.Tick += OnTimer;
            t.IsEnabled = true;
            t.Start();
        }

        /// <summary>
        /// 時鐘回調
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void OnTimer(object sender, EventArgs e)
        {
            switch (_state)
            {
                    case State.Start:
                    {
                        _timeSpan += new TimeSpan(0,0,0,1);
                    }break;
                    case State.Pause:
                    {
                        
                    }
                    break;
                    case State.End:
                    {
                        _timeSpan = new TimeSpan();
                        //_timeSpan = new TimeSpan(0, 23, 12, 45, 54);
                    }
                    break;
            }

            var time = string.Format("{0:D2}:{1:D2}:{2:D2}", _timeSpan.Hours, _timeSpan.Minutes, _timeSpan.Seconds);
            textBox1.Text = time;
        }

        /// <summary>
        /// 退出
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button4_Click(object sender, RoutedEventArgs e)
        {
            Close();
        }

        /// <summary>
        /// 開始
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            _state = State.Start;
        }
        /// <summary>
        /// 暫停
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, RoutedEventArgs e)
        {
            _state = State.Pause;
        }
        /// <summary>
        /// 停止
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button3_Click(object sender, RoutedEventArgs e)
        {
            _state = State.End;
        }
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章