网站开发公司分析,哈尔滨市哪里做淘宝网站,网站平台搭建怎么弄的,ajax登陆wordpress【 声明#xff1a;版权所有#xff0c;欢迎转载#xff0c;请勿用于商业用途。 联系信箱#xff1a;feixiaoxing 163.com】 生活当中#xff0c;我们经常会遇到倒计时的场景#xff0c;比如体育运动的时候、考试的时候等等。正好最近我们学习了c# wpf开发#xff0c;完…【 声明版权所有欢迎转载请勿用于商业用途。 联系信箱feixiaoxing 163.com】 生活当中我们经常会遇到倒计时的场景比如体育运动的时候、考试的时候等等。正好最近我们学习了c# wpf开发完全可以用它来做一个简单的倒计时软件。倒计时的原理其实不复杂就是设定一个起始时间每到达一个周期之后就开始递减直到递减为0倒计时结束。 实现上面呢我们可以分成两部分来完成。一部分是界面的设计另外一部分就是代码的编写。关于界面的部分比较简单一点的做法就是AA:BB五个字符的形式。毕竟目前来说我们学到的布局方法还不是很多AA:BB的方法虽然简约了一点但是也可以帮助我们来解决问题。 代码部分最终要的就是定时器的创建和执行。首先我们需要创建一个定时器这个定时器肯定有一些属性需要配置。接着配置完定时器之后它肯定还有一个周期回调函数在这个回调函数当中我们添加上必要的代码周期性修改AA:BB的内容这样就可以完成倒计时的工作。最后等AA:BB恢复为0的时候还需要关闭定时器。当然做的复杂一点的话还可以通过反复设置定时器的方法来使得软件功能更加地完善。 1、构建界面 c# wpf最大的一个好处就是可以一边写脚本一边查看界面的效果。本身界面的开发工作也是可以和业务代码分开来的。所以按照刚才设计的AA:BB的形式首先设计和调整好界面。不出意外界面部分的代码应该是这样的
Window x:ClassWpfApp.MainWindowxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:dhttp://schemas.microsoft.com/expression/blend/2008xmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006xmlns:localclr-namespace:WpfAppmc:IgnorabledTitleTimer Height450 Width800GridLabel x:Namenum1 FontSize80 Content0 HorizontalAlignmentLeft Margin257,135,0,0 VerticalAlignmentTop RenderTransformOrigin0.38,0.541/Label x:Namenum2 FontSize80 Content0 HorizontalAlignmentLeft Margin302,135,0,0 VerticalAlignmentTop RenderTransformOrigin-0.395,0.609/Label x:Namenum3 FontSize80 Content: HorizontalAlignmentLeft Margin364,135,0,0 VerticalAlignmentTop RenderTransformOrigin-0.395,0.609/Label x:Namenum4 FontSize80 Content0 HorizontalAlignmentLeft Margin397,135,0,0 VerticalAlignmentTop/Label x:Namenum5 FontSize80 Content0 HorizontalAlignmentLeft Margin442,135,0,0 VerticalAlignmentTop//Grid
/Window2、界面的微调 有了基本的布局之后一般我们还会根据看到的界面效果做一些微调直到它符合我们的要求为止。因为所有的微调操作都是可以实时看到反馈结果的所以如果项目本身比较简单的话这个微调的时间并不需要花费太久。 3、编写代码 前面我们讨论过代码部分修改.xaml.cs即可主要的内容就是添加定时器实现定时器回调函数更新label内容。为了方便大家理解这里给出完整的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace WpfApp
{/// summary/// MainWindow.xaml 的交互逻辑/// /summarypublic partial class MainWindow : Window{private int num 2400;private System.Windows.Threading.DispatcherTimer dispatcherTimer null;public MainWindow(){InitializeComponent();// initializationdisplay_number();dispatcherTimer new System.Windows.Threading.DispatcherTimer();dispatcherTimer.Tick new EventHandler(dispatcherTimer_Tick);dispatcherTimer.Interval new TimeSpan(0, 0, 1);dispatcherTimer.Start();}private void dispatcherTimer_Tick(object sender, EventArgs e)//计时执行的程序{num - 1;if(num 0){dispatcherTimer.Stop();return;}display_number();}private void display_number(){// display numnum1.Content Convert.ToString((num / 60) / 10);num2.Content Convert.ToString((num / 60) % 10);num4.Content Convert.ToString((num % 60) / 10);num5.Content Convert.ToString((num % 60) % 10);}}
}代码当中主要有三个函数。函数MainWindow是构造函数除了系统自带的内容之外我们还创建了一个定时器它的名字叫dispatchTimer。这个定时器的回调函数是dispatchTimer_Tick执行周期是每1s被调用一次并且在创建完毕之后立即执行。 第二个函数是dispatchTimer_Tick这就是刚刚说的定时器回调函数每1s执行一次。每一次执行的时候我们都需要num递减1。这个num就是总的计数时间以秒为单位。假设我们设置的num是1200那就代表1200s时间长度为20min。如果时间为0之后那么可以停止定时器的执行了。 第三个函数是display_number这个函数在前面两个函数当中都被调用了。它的功能比较纯粹主要就是显示AA:BB的内容其中AA代表分钟BB代表秒钟怎么把num转化成AA:BB主要就是采取一些除法和取余的手段来实现的大家可以参考对应的代码思考一下就能明白里面的远原理了。 4、调试和测试 调试和测试就比较简单了。测试主要有两点第一验证软件启动之后是否真的发生了数据递减的动作。第二时间递减为0之后是不是定时器就停止了操作。如果这两点都已经ok了那说明我们编写的软件就是成功的。不然就需要回去检查一下原因看看问题发生在了什么地方。 注 如果需要把小时也算在里面有兴趣的同学可以试试这个逻辑 // display numnum1.Content Convert.ToString((num / 3600) / 10);num2.Content Convert.ToString((num / 3600) % 10);num4.Content Convert.ToString((num % 3600 / 60) / 10);num5.Content Convert.ToString((num % 3600 / 60) % 10);num7.Content Convert.ToString((num % 60) / 10);num8.Content Convert.ToString((num % 60) % 10);