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;
            }
  • 相关阅读:
    poj 2676 Suduku (dfs)
    poj 1562 Oil Deposits (dfs)
    poj 2907 Collecting Beepers (dfs)
    poj 1655 Balancing Act (树形dfs)
    poj 3411 Paid Roads (dfs)
    hdu 2896 病毒侵袭 (AC)
    hdu 3065 病毒侵袭持续中 (AC)
    poj 2251 Dungeon Master (bfs)
    java中debug使用
    Swing入门级小项目总结
  • 原文地址:https://www.cnblogs.com/ysyn/p/3981112.html
Copyright © 2011-2022 走看看