首页 > 学院 > 开发设计 > 正文

倒计时控件

2019-11-14 16:26:20
字体:
来源:转载
供稿:网友

最近做一个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;        }

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表