系统小闹钟V1.0 C#程序小例
2012-04-21 16:07
92 查看
因为发现自己经常计划好了做些什么事儿,到点儿了有时候经常忘,于是自己用C#写了一个系统闹钟程序。
目前是V1.0版本后期还会继续优化。。
程序实例可在本网资源中下载http://download.csdn.net/detail/tskyfree/4239406
软件名称:Clockv1.0
软件功能:设定闹钟
具体详解:
左侧显示系统当前日期
显示系统当前时间:图形化表盘+数字化显示
区间模式:
设定任务名称
设定任务起止时间
显示当前任务状态
填写合理时间并设定,任务中可随时终止或退出程序
计时模式:
设定任务名称
设定距任务执行的倒计时时间
显示当前任务状态
填写合理时间并设定,任务中可随时终止或退出程序
窗体最小化后不显示在任务栏中,在右下侧托盘区显示小图标,点击小图标可还原窗体
任务计时到达终止条件时:自动弹出提示,窗体置顶
支持快捷键操作Alt+相应快捷键
作者:TskyFree
开发环境:visualstudio2010
日期:2012年4月
截图展示:
代码实现:
目前是V1.0版本后期还会继续优化。。
程序实例可在本网资源中下载
软件名称:Clockv1.0
软件功能:设定闹钟
具体详解:
左侧显示系统当前日期
显示系统当前时间:图形化表盘+数字化显示
区间模式:
设定任务名称
设定任务起止时间
显示当前任务状态
填写合理时间并设定,任务中可随时终止或退出程序
计时模式:
设定任务名称
设定距任务执行的倒计时时间
显示当前任务状态
填写合理时间并设定,任务中可随时终止或退出程序
窗体最小化后不显示在任务栏中,在右下侧托盘区显示小图标,点击小图标可还原窗体
任务计时到达终止条件时:自动弹出提示,窗体置顶
支持快捷键操作Alt+相应快捷键
作者:TskyFree
开发环境:visualstudio2010
日期:2012年4月
截图展示:
代码实现:
usingSystem; usingSystem.Collections.Generic; usingSystem.ComponentModel; usingSystem.Data; usingSystem.Drawing; usingSystem.Linq; usingSystem.Text; usingSystem.Windows.Forms; namespaceClockApp { publicpartialclassForm1:Form { //定义计时字段 privatestringstartTime; privatestringendTime; privateintcountDownLimit; publicForm1() { InitializeComponent(); } privatevoidForm1_Load(objectsender,EventArgse) { //初始化窗体 initFrom(); //功能初始化 initClockPlay(); initAreaModel(); initCountDownModel(); } //初始化窗体 privatevoidinitFrom() { this.ShowInTaskbar=true;//显示在任务栏中 this.WindowState=FormWindowState.Normal;//窗体正常大小显示 notifyIcon1.Visible=false;//隐藏小图标 } //窗体最小化处理 privatevoidForm1_SizeChanged(objectsender,EventArgse) { if(this.WindowState==FormWindowState.Minimized) { //窗体隐藏 this.ShowInTaskbar=false; //快捷图标显示 notifyIcon1.Visible=true;//注意顺序 notifyIcon1.BalloonTipText="小闹钟"; notifyIcon1.BalloonTipTitle="提示"; notifyIcon1.ShowBalloonTip(50);//气球提示淡出 } } //托盘图标点击事件 privatevoidnotifyIcon1_MouseDoubleClick(objectsender,MouseEventArgse) { this.ShowInTaskbar=true;//显示在任务栏中 this.WindowState=FormWindowState.Normal;//窗体正常大小显示 notifyIcon1.Visible=false;//隐藏小图标 } //窗体退出事件 privatevoidFrom_Close(objectsender,EventArgse) { this.Close(); } //******************************************************************** //左侧钟表计时 privatevoidtimer1_Tick(objectsender,EventArgse) { //更新显示系统时间 DateTimedateNow=DateTime.Now; label2.Text=dateNow.ToString("HH:mm:ss"); ClockPosposNow=newClockPos(); competeClockPos(dateNow,refposNow); //更新时、分、秒针 lineShape1.X1=posNow.horX1; lineShape1.Y1=posNow.horY1; lineShape1.X2=posNow.horX2; lineShape1.Y2=posNow.horY2; lineShape2.X1=posNow.minX1; lineShape2.Y1=posNow.minY1; lineShape2.X2=posNow.minX2; lineShape2.Y2=posNow.minY2; lineShape3.X1=posNow.secX1; lineShape3.Y1=posNow.secY1; lineShape3.X2=posNow.secX2; lineShape3.Y2=posNow.secY2; } //左侧钟表初始化 privatevoidinitClockPlay() { //更新显示系统时间 DateTimedateNow=DateTime.Now; label2.Text=dateNow.ToString("HH:mm:ss"); ClockPosposNow=newClockPos(); competeClockPos(dateNow,refposNow); //更新时、分、秒针 lineShape1.X1=posNow.horX1; lineShape1.Y1=posNow.horY1; lineShape1.X2=posNow.horX2; lineShape1.Y2=posNow.horY2; lineShape2.X1=posNow.minX1; lineShape2.Y1=posNow.minY1; lineShape2.X2=posNow.minX2; lineShape2.Y2=posNow.minY2; lineShape3.X1=posNow.secX1; lineShape3.Y1=posNow.secY1; lineShape3.X2=posNow.secX2; lineShape3.Y2=posNow.secY2; //钟表开始计时 timer1.Start(); //显示当前日期 DateTimedate=DateTime.Now; label1.Text=date.ToString("yyyy年MM月dd日"); //显示当前时间 label2.Text=date.ToString("HH:mm:ss"); } //计算表钟位置 privatevoidcompeteClockPos(DateTimedateTime,refClockPospos) { //计算钟表圆心 intclockX=ovalShape1.Location.X+ovalShape1.Height/2; intclockY=ovalShape1.Location.Y+ovalShape1.Height/2; //得到当前时分秒 inthor=dateTime.Hour%12; intmin=dateTime.Minute; intsec=dateTime.Second; //计算坐标 pos.horX1=pos.minX1=pos.secX1=clockX; pos.horY1=pos.minY1=pos.secY1=clockY; pos.horX2=(int)(pos.horX1+(pos.horLength*Math.Sin((hor/12.0)*2.0*Math.PI))); pos.horY2=(int)(pos.horY1-(pos.horLength*Math.Cos((hor/12.0)*2.0*Math.PI))); pos.minX2=(int)(pos.minX1+(pos.minLength*Math.Sin((min/60.0)*2.0*Math.PI))); pos.minY2=(int)(pos.minY1-(pos.minLength*Math.Cos((min/60.0)*2.0*Math.PI))); pos.secX2=(int)(pos.secX1+(pos.secLength*Math.Sin((sec/60.0)*2.0*Math.PI))); pos.secY2=(int)(pos.secY1-(pos.secLength*Math.Cos((sec/60.0)*2.0*Math.PI))); } //******************************************************************** //区间模式计时 privatevoidtimer2_Tick(objectsender,EventArgse) { //检查是否时间到 if(String.Compare(endTime,label2.Text)<=0) { //停止计时,提示用户 timer2.Stop(); //初始化窗体 initFrom(); this.TopMost=true;//窗体置顶 DialogResultmsgBtn=MessageBox.Show("哎呀!"+textBox1.Text+"时间到了~","时间到!",MessageBoxButtons.OK,MessageBoxIcon.Information); while(DialogResult==DialogResult.OK) { MessageBox.Show("\a"); } //区间模式初始化 initAreaModel(); } } //初始化区间模式 privatevoidinitAreaModel() { //初始化当前状态 label7.Text="无任务"; //初始化访问限制 textBox1.Enabled=true; dateTimePicker1.Enabled=true; dateTimePicker2.Enabled=true; button1.Enabled=true;//可设定 button2.Enabled=false;//不可终止 } //区间模式点击设定 privatevoidareaTimeSet(objectsender,EventArgse) { //获取数据 startTime=dateTimePicker1.Text; endTime=dateTimePicker2.Text; //检验起始和终止时间的合法性 if((String.Compare(startTime,label2.Text)<=0)&&(String.Compare(endTime,label2.Text)>=0)) { //开始计时 timer2.Start(); //修改其他访问性 textBox1.Enabled=false; dateTimePicker1.Enabled=false; dateTimePicker2.Enabled=false; button1.Enabled=false; button2.Enabled=true;//可随时终止 //修改状态 label7.Text="任务中...\n\n开始于:"+startTime+"\n\n预计结束于:"+endTime; } else MessageBox.Show("时间的设定与当前时间不合乎常理。\n请仔细检查,重新设定!","出错了",MessageBoxButtons.OK,MessageBoxIcon.Error); } //区间模式点击终止 privatevoidareaTimeEnd(objectsender,EventArgse) { //停止任务计时 timer2.Stop(); //重新初始化 initAreaModel(); } //******************************************************************** //初始化倒计时模式 privatevoidinitCountDownModel() { //初始化当前状态 label14.Text="无任务"; //初始化访问限制 textBox2.Enabled=true; textBox3.Enabled=true; textBox4.Enabled=true; textBox5.Enabled=true; button4.Enabled=true;//可设定 button6.Enabled=false;//不可终止 } //倒计时模式计时 privatevoidtimer3_Tick(objectsender,EventArgse) { //更新状态 countDownLimit--; inthorLeft=countDownLimit/(60*60);//剩余小时 intminLeft=(countDownLimit-horLeft*60*60)/60;//剩余分钟 intsecLeft=countDownLimit-horLeft*60*60-minLeft*60;//剩余秒数 label14.Text="任务中...\n\n剩余时间:"+horLeft.ToString()+"小时"+minLeft+"分钟"+secLeft+"秒"; //检查是否时间到 if(0==countDownLimit) { timer3.Stop(); //初始化窗体 initFrom(); this.TopMost=true;//窗体置顶 MessageBox.Show("哎呀!"+textBox2.Text+"时间到了~","时间到!",MessageBoxButtons.OK,MessageBoxIcon.Information); //区间模式初始化 initCountDownModel(); } } //倒计时模式点击设定 privatevoidCountDownTimeSet(objectsender,EventArgse) { //获取数据 countDownLimit=int.Parse(textBox3.Text)*60*60+int.Parse(textBox4.Text)*60+int.Parse(textBox5.Text); //检验倒计时时间的合法性 if(countDownLimit<=0)//不能是负数,不能超过24小时 MessageBox.Show("倒计时不能是零或负数!\n请仔细检查,重新设定!","出错了",MessageBoxButtons.OK,MessageBoxIcon.Error); elseif(countDownLimit>24*60*60) MessageBox.Show("倒计时不能超过一天!\n请仔细检查,重新设定!","出错了",MessageBoxButtons.OK,MessageBoxIcon.Error); else//倒计时设定正确 { //开始计时 timer3.Start(); //修改其他访问性 textBox2.Enabled=false; textBox3.Enabled=false; textBox4.Enabled=false; textBox5.Enabled=false; button4.Enabled=false; button6.Enabled=true;//可随时终止 //修改状态 label14.Text="任务中..."; } } //倒计时模式点击终止 privatevoidCountDownTimeEnd(objectsender,EventArgse) { //停止任务计时 timer3.Stop(); //重新初始化 initCountDownModel(); } } }
publicclassClockPos
{
publicinthorLength=40;//时针长度
publicintminLength=55;//分针长度
publicintsecLength=65;//秒针长度
//时分秒针的起始坐标
publicintsecX1;
publicintsecX2;
publicintsecY1;
publicintsecY2;
publicintminX1;
publicintminX2;
publicintminY1;
publicintminY2;
publicinthorX1;
publicinthorX2;
publicinthorY1;
publicinthorY2;
}
相关文章推荐
- C#:自动更新(从网络共享路径),程序删除,从网络复制,系统启动
- C# ASP.NET 通用权限管理系统组件源码中WCF例子程序客户端运行详细配置参考
- C# 开发winform程序 手机短信群发系统
- C#查看程序占用系统的内存
- C#实现WinForm程序的动态系统托盘图标
- C#编写WIN32系统托盘程序
- C#程序如何实现设置系统WIFI共享
- 在C#程序中使用系统热键
- 在C#程序中使用系统热键
- C#中如何重启系统并在开机后自动执行当前可执行程序
- 服务程序C#编写系统服务,注册表读写问题
- [原创]C#列出系统中所有运行的程序
- C# ASP.NET 通用权限管理系统组件源码中WCF例子程序服务器端运行详细配置参考
- C#窗体程序入门,实现3秒倒计时关闭显示器,实现系统托盘,右键菜单。
- C# ASP.NET 通用权限管理系统组件源码中WCF例子程序服务器端运行详细配置参考
- 在C#程序中使用系统热键
- 用visual stdio C#编写的程序能移植到wince的系统中吗?
- C# 实现WinForm程序的动态系统托盘图标
- C# ASP.NET 通用权限管理系统组件源码中WCF例子程序客户端运行详细配置参考
- C#winform中怎么将程序最小化到系统托盘