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;
        }
    }
}

posted @ 2014-04-21 15:46  Simon Lau  阅读(1495)  评论(0编辑  收藏  举报