zoukankan      html  css  js  c++  java
  • 倒计时控件

    最近做一个WPF小项目需要使用到计时器,因此写了一个计时控件,记录下来,以便下次使用。

    前台的XAML:

    <UserControl x:Class="Test.CountDown"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" 
                 d:DesignHeight="110" d:DesignWidth="150">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="43*" />
                <ColumnDefinition Width="13"/>
                <ColumnDefinition Width="43*" />
                <ColumnDefinition Width="13"/>
                <ColumnDefinition Width="43*" />
            </Grid.ColumnDefinitions>
            <TextBlock Text="00" Name="HourArea"  VerticalAlignment="Center" FontSize="30" Background="Transparent" Grid.Column="0" Foreground="DarkOrange" />
            <TextBlock Text=":" Name="HourSplitMinute"  VerticalAlignment="Center" FontSize="30" Background="Transparent" Grid.Column="1" Foreground="DarkOrange" />
            <TextBlock Text="00" Name="MinuteArea" VerticalAlignment="Center" FontSize="30" Background="Transparent" Grid.Column="2" Foreground="DarkOrange" />
            <TextBlock Text=":" Name="MinuteSplitSecond"  VerticalAlignment="Center" FontSize="30" Background="Transparent" Grid.Column="3" Foreground="DarkOrange" />
            <TextBlock Text="00"  Name="SecondArea" VerticalAlignment="Center" FontSize="30" Background="Transparent" Grid.Column="4" Foreground="DarkOrange" />
        </Grid>
    </UserControl>
    View Code

    后台的逻辑:

    public partial class CountDown : UserControl
        {
            public DispatcherTimer timer;
            public Process pro;
            public Stopwatch sw = new Stopwatch();
            public int seconds;
    
            public CountDown()
            {
                InitializeComponent();
                pro = new Process();
    
                timer = new DispatcherTimer();
                timer.Interval = new TimeSpan(0, 0, 1);
                timer.Tick += new EventHandler(timer_Tick);
            }
    
            void timer_Tick(object sender, EventArgs e)
            {
                TimeSpan ts = new TimeSpan (0,0,seconds);
                pro.totalSecond = (int)(ts - sw.Elapsed).TotalSeconds;
                if (pro .totalSecond > 0)
                {
                    HourArea.Text = pro.GetHour();
                    MinuteArea.Text = pro.GetMinute();
                    SecondArea.Text = pro.GetSecond();
                }
                else
                {
                    timer.Stop();
                    sw.Stop ();
                    sw.Reset();
                    SecondArea.Text = string.Format("{0:D2}", 0);
                }
            }
    
        }
    
        public class Process
        {
            public int totalSecond;
    
            //获取小时字符串
            public string GetHour()
            {
                return string.Format("{0:D2}", totalSecond / 3600);
            }
    
            //获取分钟字符串
            public string GetMinute()
            {
                return string.Format("{0:D2}", (totalSecond / 60 - ((int)(totalSecond / 3600) * 60)));
            }
    
            //获取秒字符串
            public string GetSecond()
            {
                return string.Format("{0:D2}", totalSecond % 60);
            }
        }
    View Code

    调用:

           this.countDown1.timer.Stop();
           this.countDown1.sw.Reset();
           this.countDown1.seconds = 300;//传入倒计时总时间(秒)
           this.countDown1.timer.Start();
           this.countDown1.sw.Start();

    2014。11.28日补充:

    最近一个小项目需要用到服务器的系统时间,而且需要精确到小数点后三位。方法如下:

    public DateTime GetTime()
            {
                string strSql = "select getdate()";
                DateTime dt;
                SqlDataReader dataReader = DbHelperSQL.ExecuteReader(strSql);
                if (dataReader.Read())
                {
                    dt = (DateTime)dataReader[0];
                    dataReader.Close();
                    return dt;
                }
                return DateTime.MinValue;
            }
  • 相关阅读:
    Node.js Event Loop 的理解 Timers,process.nextTick()
    Ajax关于readyState(状态值)和status(状态码)的研究
    原生 JavaScript 实现 AJAX、JSONP
    Python selenium.webdriver.chrome.options.Options() Examples
    【python】统一转换日期格式dateutil.parser.parse
    python读取doc
    大规模爬虫流程总结
    如何巧妙的利用selenium和requests组合来进行操作需要登录的页面
    使用pandas进行数据清洗
    twilio打电话和发短信
  • 原文地址:https://www.cnblogs.com/ysyn/p/3981112.html
Copyright © 2011-2022 走看看