zoukankan      html  css  js  c++  java
  • 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;
            }
        }
    }
    

  • 相关阅读:
    <html>
    Java设计模式----策略模式
    Android之通过网络播放一首简单的音乐
    关于六度关系理论,我最终算出了自己与奥巴马的关系度数
    本地创建Duplicate数据库
    资源向导之 &quot;APUE&quot;
    WinCE 下编程须要IP地址控件咋办?
    LeetCode Anagrams My solution
    一起talk C栗子吧(第一百三十三回:C语言实例--创建进程时的内存细节)
    自己定义View Layout过程
  • 原文地址:https://www.cnblogs.com/simonryan/p/3678581.html
Copyright © 2011-2022 走看看