您的位置:首页 > 编程语言 > C#

系统小闹钟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月

截图展示:





代码实现:

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: