C#简单的闹钟计时器,当用户设置完定时时间之后,如果到了设置的时间,该软件会自动进行提示。

代码可直接运行

C#计时器在日常生活中经常用到,比如短跑比赛需要计时等。制作了一个简单的闹钟计时器,当用户设置完定时时间之后,如果到了设置的时间,该软件会自动进行提示。

界面搭建如下:
在这里插入图片描述

运行界面如下:在这里插入图片描述

思路:

需要两个timer。
timer1用于计算剩余时间
timer2用于使闹钟显示的系统时间与当前系统时间保持一直
numericUpDown空间用于用户设定时间
用户第一次进入时,timer1不工作,当用户设定完时间,点击确定后,timer1开始计时工作。获取系统时间与用户设定的时间,求差值,并且判断用户设定的时间是当天的时间还是第二天的时间。
若是当天时间,直接用求得的差值就可以,若是用户输入的是第二天的时间,则用86400(一天有86400秒)减去两者之间的差

注意:

numericUpDown控制设置好最大值与最小值,小时最小值为0,最大值为23,分钟和秒的最大值是59,最小值是0

ateTime nowtime = Convert.ToDateTime(DateTime.Now.ToString());//获取当前系统时间
            DateTime endtime = Convert.ToDateTime(label1.Text.Trim().ToString());//获取用户设定的时间
            //求两个时间之间相差的秒数
            long dat1 = DateAndTime.DateDiff("s", nowtime, endtime, FirstDayOfWeek.Sunday, FirstWeekOfYear.FirstFourDays);
            long dat=0;
            if (dat1 < 0)//如果两者相差的秒数小于0,说明此时设定的为第二天的时间
            {
                dat = dat1+86400;//一天共有86400秒,两者相差的秒数加上一天的秒数,得到当前系统时间与设定的第二天的时间相差的秒数(注意此时dat1 < 0,所以是dat1+86400)
                string color = "red";
              this.label3.ForeColor = System.Drawing.ColorTranslator.FromHtml(color);//设置文字颜色为红色
                label3.Text = ("闹钟已启动\n剩余" + dat + "秒");//提示剩余时间
                }

源代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.VisualBasic;

namespace _5_5
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)//界面运行时
        {
            this.Text = "闹钟计时器";//设置界面名称为“闹钟计时器”
            string hour = this.numericUpDown1.Value.ToString();//获取“时间定时”区域的小时
            string minute = this.numericUpDown2.Value.ToString();//获取“时间定时”区域的分钟
            string second = this.numericUpDown3.Value.ToString(); //获取“时间定时”区域的秒
            int hour1 = Convert.ToInt32(hour);//将string类型的小时转换为int型的小时
            int minute1 = Convert.ToInt32(minute);//将string类型的分钟转换为int型的分钟
            int second1 = Convert.ToInt32(second);//将string类型的秒转换为int型的秒
            string h = "";//定义小时为个位数的时候的补足位
            string m = "";//定义分钟为个位数的时候的补足位
            string s = "";//定义秒为个位数的时候的补足位
            if (hour1 < 10)//当小时为个位数的时候
            {
                h = "0";//将小时补足位设为0
            }
            if (minute1 < 10)//当分钟为个位数的时候
            {
                m = "0";//将分钟补足位设为0
            }
            if (second1 < 10)//当秒为个位数的时候
            {
                s = "0";//将秒补足位设为0
            }
            string color1 = "green";//定义颜色属性为绿色
            this.label1.ForeColor = System.Drawing.ColorTranslator.FromHtml(color1);//设置“时间定时”区域的label1的颜色为绿色
            label1.Text = (h+hour + ":" + m + minute + ":" + s + second);//输出“时间定时”区域的时间,显示在label1上
            string color = "blue";//定义颜色属性为蓝色
            this.label3.ForeColor = System.Drawing.ColorTranslator.FromHtml(color);//设置时钟未启动时的文字颜色为蓝色
            label3.Text = "闹钟未启动,\n请设置时间!";//提示用户当前闹钟未启动,暂未设置时间
            timer1.Stop();//此时timer1未启动,没有计时功能
        }
        private void button1_Click(object sender, EventArgs e)//确定按钮点击时,闹钟开始计时
        {
            string hour = this.numericUpDown1.Value.ToString();//获取“时间定时”区域的小时
            string minute = this.numericUpDown2.Value.ToString();//获取“时间定时”区域的分钟
            string second = this.numericUpDown3.Value.ToString();//获取“时间定时”区域的秒
            int hour1 = Convert.ToInt32(hour);//将string类型的小时转换为int型的小时
            int minute1 = Convert.ToInt32(minute);
            int second1 = Convert.ToInt32(second);
            string h = "";//定义小时为个位数的时候的补足位
            string m = "";//定义分钟为个位数的时候的补足位
            string s = "";//定义秒为个位数的时候的补足位
            if (hour1 < 10)//当小时为个位数的时候
            {
                h = "0";//将小时补足位设为0
            }
            if (minute1 < 10)//当小时为个位数的时候
            {
                m = "0";//将小时补足位设为0
            }
            if (second1 < 10)//当小时为个位数的时候
            {
                s = "0";//将小时补足位设为0
            }
            string color = "green";//设置颜色为绿色
            this.label1.ForeColor = System.Drawing.ColorTranslator.FromHtml(color);//此时将“时间定时”区域的label1的颜色设为绿色
            label1.Text = (h+hour + ":" +m+ minute + ":" +s+ second);//输出用户设定的时间
            timer1.Start();//timer1开始倒计时工作
        }
        private void timer1_Tick(object sender, EventArgs e)//timer1工作实现功能函数
        {
            string starhour = DateTime.Now.TimeOfDay.Hours.ToString();//获取系统当前时间的小时
            string starminute = DateTime.Now.TimeOfDay.Minutes.ToString();//获取系统当前时间的分钟
            string starsecond = DateTime.Now.TimeOfDay.Seconds.ToString();//获取系统当前时间的分钟
            //以下操作是为了输出当前系统时间,并且保证输出时间的小时,分钟和秒是两位数,此处不再赘述
            int hour1 = Convert.ToInt32(starhour);
            int minute1 = Convert.ToInt32(starminute);
            int second1 = Convert.ToInt32(starsecond);
            string m = "";
            string s = "";
            string h = "";
            if (hour1 < 10)
            {
                h = "0";
            }
            if (minute1 < 10)
            {
                m = "0";
            }
            if (second1 < 10)
            {
                s = "0";
            }
            string color1 = "green";
            this.label2.ForeColor = System.Drawing.ColorTranslator.FromHtml(color1);
            label2.Text = (h+starhour + ":" + m+starminute + ":" +s+ starsecond);//输出当前系统时间
            DateTime nowtime = Convert.ToDateTime(DateTime.Now.ToString());//获取当前系统时间
            DateTime endtime = Convert.ToDateTime(label1.Text.Trim().ToString());//获取用户设定的时间
            //求两个时间之间相差的秒数
            long dat1 = DateAndTime.DateDiff("s", nowtime, endtime, FirstDayOfWeek.Sunday, FirstWeekOfYear.FirstFourDays);
            long dat=0;
            if (dat1 < 0)//如果两者相差的秒数小于0,说明此时设定的为第二天的时间
            {
                dat = dat1+86400;//一天共有86400秒,两者相差的秒数加上一天的秒数,得到当前系统时间与设定的第二天的时间相差的秒数
                string color = "red";
              this.label3.ForeColor = System.Drawing.ColorTranslator.FromHtml(color);//设置文字颜色为红色
                label3.Text = ("闹钟已启动\n剩余" + dat + "秒");//提示剩余时间
                if (dat == 0)//当剩余时间为0秒时
                {
                    timer1.Stop();//计时器停止工作
                    MessageBox.Show( "时间到");//提示用户时间到了
                }
            }
            else//若当前设定的时间晚于系统时间
            {
                string color = "red";
                this.label3.ForeColor = System.Drawing.ColorTranslator.FromHtml(color);//设置文字颜色为红色
                label3.Text = ("闹钟已启动\n剩余" + dat1 + "秒");//直接输出系统时间与用户设定的时间的差值
                if (dat1 == 0)//当剩余时间为0秒时
                {
                    timer1.Stop();//计时器停止工作
                    MessageBox.Show("时间到");//提示用户时间到了
                }
            }
        }

       
        private void timer2_Tick(object sender, EventArgs e)//用于获取系统时间,并且使输出的系统时间随使都是当前系统的时间
        {
            string starhour = DateTime.Now.TimeOfDay.Hours.ToString();
            string starminute = DateTime.Now.TimeOfDay.Minutes.ToString();
            string starsecond = DateTime.Now.TimeOfDay.Seconds.ToString();
            int minute = Convert.ToInt32(starminute);
            int second = Convert.ToInt32(starsecond);
            string m = "";
            string s = "";
            if (minute < 10)
            {
                m = "0";
            }
            if (second < 10)
            {
                s = "0";
            }
            string color = "green";
            this.label2.ForeColor = System.Drawing.ColorTranslator.FromHtml(color);
            label2.Text = (starhour + ":" + m+starminute + ":" + s+starsecond);
        }

        private void button2_Click(object sender, EventArgs e)//取消按钮点击事件
        {
            timer1.Stop();//停止倒计时
            string color = "yellow";
            this.label3.ForeColor = System.Drawing.ColorTranslator.FromHtml(color);
            label3.Text = "闹钟已暂停!";//提示用户已经停止计时
        }
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

C#写的闹钟应用程序。到处都是注释,一看就懂! 核心代码和效果展示见我的博客:http://blog.csdn.net/luochao5862426/article/details/78570141 个人特色: 1、可以这么所说,别人有的,我有!别人没有的,我也有。集百家之长,选我就对了,嘿嘿。 2、代码详细,基本上每一条稍微重要点的代码都有注释这行代码是干嘛的,所以你可以看到好多好多注释,详细的不能再详细! 3、里面包含,可直接导入的项目文件、该程序的PPT展示以及录制的视频展示。 4、模块清晰,注释详细,低耦合,高内聚。 主页面介绍:分三个部分 一、动态时钟部分,像石英钟一样时、分、秒针不停转动。 二、定点闹钟部分,简单点就是可以定闹钟。 三、闹钟备忘录部分,显而易见,为了添加提示功能。 本人设计了两种可选模式: 1、懒人模式(可多次延时铃,下面主要讲述这个模式) 2、生存模式(本次考验失败后则下次的闹钟提前几分钟铃。由于时间有限本人没去实现这个功能) 主要功能介绍: 一、时钟(石英钟) 1、使用C#的GDI+画出石英钟时、分、秒针不停转动的效果并加上了指针的尾巴。 二、闹钟 1、定闹钟时添加备注。 2、自选(默认铃声或本地铃声)试听铃声。所以机智的你可以当一个MP3用了。 3、设定多个闹钟。重点是,你可以设置不同类型(今天、每天、自定义星期、指定日期)的闹钟。 4、设定不同的铃方式。包括:只一次、不断铃、静音铃。 5、定时关机。定闹钟的时候选择了定时关机这个选项,那么,在闹钟到点后的一定时间内(我设置的3秒)会自动关机。 6、开机自启动。这个可以自己设定,很多人不需要。 7、铃抖屏。闹钟到点后会抖动一小段时间(我设置的3秒)的屏幕,并同步跳到你打开的所有窗口的最顶层窗体。 8、系统托盘。可以隐藏到系统托盘。 三、备忘录 {备忘录组成:时段+时间+备注+尾巴(可删除,知识为了查看有哪些操作)} 1、移除所定的闹钟。 2、把闹钟备忘录保存至本地。 3、从本地导入至闹钟备忘录。所以你可以在本地修改备忘录咯,包括时间和内容。 4、修改闹钟备忘录内容。在程序界面修改备忘录。 5、查找备忘录内容。在程序界面查找备忘录内容。 6、显示倒计时。你在定闹钟的时候要是选了倒计时这个选项,则你可以在备忘录里面选中,显示倒计时。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值