private void tmrClock_Tick(object sender, System.EventArgs e) { //计时减一 this.maxTimeNumber = maxTimeNumber - 1; if (this.maxTimeNumber == 0) { //关机时间到,执行关机操作 //关闭计时器控件 this.tmrClock.Stop(); //实例化ExitWindows类 objExitWindows = new ExitWindows(); bool ok = objExitWindows.Close(); if (!ok) { MessageBox.Show("由于某种原因,无法完成操作"); } } else { //显示提示信息 this.lblMessage.Text = "离自动关机时计时间还有 " + this.maxTimeNumber.ToString() + " 秒"; } }
private void tmrMainClock_Tick(object sender, EventArgs e) { //每一次定时时间内刷新日期时间的显示 DateTime objDateTime = System.DateTime.Now; string currentDate = objDateTime.ToLongDateString(); string currentTime = objDateTime.ToLongTimeString(); this.textDateTime.Text = currentDate + " " + currentTime; //检查是否启动定时关机 if (State == true) { //定时关机已经启动 //计算剩余的关机时间 //得到设定关机时间的年分 int intYear = this.dtpCurrentDate.Value.Year; //得到设定关机时间的月分 int intMonth = this.dtpCurrentDate.Value.Month; //得到设定关机时间的天数 int intDay = this.dtpCurrentDate.Value.Day; //得到设定关机时间的小时 int intHour = this.dtpCurrentTime.Value.Hour; //得到设定关机时间的分 int intMinute = this.dtpCurrentTime.Value.Minute; //得到设定关机时间的秒 int intSecond = this.dtpCurrentTime.Value.Second; //用设定关机时间的年、月、日、小时、分、秒实例化 objDateTime = new DateTime(intYear, intMonth, intDay, intHour, intMinute, intSecond); //求剩余的关机时间 System.TimeSpan remainTime = objDateTime - System.DateTime.Now; //将剩余的关机时间转换为秒 double time = remainTime.TotalSeconds; //判断是否为负值 if (time < 0) { //结果为负,表示设置的关机时间不合适,一般为误操作 //取消“启动定时关机” State = false; //显示提示信息 MessageBox.Show("设定的定时关机时间必须大于当前的时间"); this.lblState2.Text = "未启动"; } else { //结果为正值 //检查是否小于60秒并且提示方式为1分钟倒计时 if (time < 60 && State == true) { //启动提醒界面 //实例化AwokeForm,并传递主窗体对象 AwokeForm objAwokeForm = new AwokeForm(this); //关闭计时器 this.tmrMainClock.Stop(); //隐藏主界面 this.Visible = false; //显示提醒界面 objAwokeForm.Show(); objAwokeForm.lbl = lblState2; objAwokeForm.tmr = tmrMainClock; } //检查是否小于0秒并且提示方式为无 if (time < 0 && State == false) { //关机 //调用关闭方法 bool ok = objExitWindows.Close(); if (!ok) { MessageBox.Show("由于某种原因,无法完成操作"); } } } } }