
·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> 倒计时控件
最近做一个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;
}