用windowsformapp完成: 1、窗口加载,设置定时器1,间隔为1000毫秒,显示当前年月日+时间 2、起床闹钟,设置好后,点击执行,弹出消息框:“天选之子,起床了迎接朝阳!” 2、睡觉闹钟,设置好后,点击执行,8点弹出消息框:“逗比,该睡觉了! 4、定时开机重启:时间到后,执行关机或者重启操作。
时间: 2024-01-04 19:02:25 浏览: 70
闹钟、秒表、倒计时、年月日(闰年自动计算)、星期
3星 · 编辑精心推荐
好的,以下是实现您要求的 Windows Forms 应用程序代码:
```csharp
using System;
using System.Windows.Forms;
namespace AlarmClock
{
public partial class Form1 : Form
{
DateTime wakeupTime = DateTime.MinValue;
DateTime sleepTime = DateTime.MinValue;
public Form1()
{
InitializeComponent();
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
lblCurrentTime.Text = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
}
private void btnSetWakeup_Click(object sender, EventArgs e)
{
wakeupTime = dtpWakeup.Value;
MessageBox.Show("天选之子,起床了迎接朝阳!");
}
private void btnSetSleep_Click(object sender, EventArgs e)
{
sleepTime = dtpSleep.Value;
MessageBox.Show("逗比,该睡觉了!");
}
private void btnSetShutdown_Click(object sender, EventArgs e)
{
DateTime shutdownTime = dtpShutdown.Value;
TimeSpan timeToShutdown = shutdownTime - DateTime.Now;
if (timeToShutdown.TotalMilliseconds < 0)
{
MessageBox.Show("请选择正确的关机时间!");
return;
}
if (rbShutdown.Checked)
{
System.Diagnostics.Process.Start("shutdown", "/s /t " + ((int)timeToShutdown.TotalSeconds).ToString());
}
else if (rbRestart.Checked)
{
System.Diagnostics.Process.Start("shutdown", "/r /t " + ((int)timeToShutdown.TotalSeconds).ToString());
}
}
private void timer2_Tick(object sender, EventArgs e)
{
if (wakeupTime != DateTime.MinValue && DateTime.Now >= wakeupTime)
{
MessageBox.Show("天选之子,起床了迎接朝阳!");
wakeupTime = DateTime.MinValue;
}
if (sleepTime != DateTime.MinValue && DateTime.Now >= sleepTime)
{
MessageBox.Show("逗比,该睡觉了!");
sleepTime = DateTime.MinValue;
}
}
}
}
```
其中,我创建了一个 Windows Forms 应用程序,包含一个 `Form1` 窗口和四个控件:`lblCurrentTime`(用于显示当前时间)、`dtpWakeup`(起床闹钟的时间选择器)、`dtpSleep`(睡觉闹钟的时间选择器)和 `dtpShutdown`(定时关机或重启的时间选择器)。此外,还有三个按钮:`btnSetWakeup`(设置起床闹钟)、`btnSetSleep`(设置睡觉闹钟)和 `btnSetShutdown`(设置定时关机或重启)。最后,还添加了两个定时器:`timer1`(用于显示当前时间)和 `timer2`(用于检测闹钟时间是否到达)。
在 `Form1` 的构造函数中,启动了 `timer1` 定时器,每隔 1000 毫秒更新一次 `lblCurrentTime` 的文本。
在 `btnSetWakeup_Click` 和 `btnSetSleep_Click` 事件处理程序中,分别记录了用户设置的起床闹钟和睡觉闹钟的时间,并弹出相应的消息框。
在 `btnSetShutdown_Click` 事件处理程序中,获取了用户设置的定时关机或重启的时间,并计算出离关机或重启还有多久(单位为秒)。然后,根据用户选择的关机或重启方式,使用 `System.Diagnostics.Process.Start` 方法启动 `shutdown` 命令,并传入相应的参数。
在 `timer2_Tick` 事件处理程序中,每隔 1000 毫秒检测一次当前时间是否已经到达用户设置的起床闹钟或睡觉闹钟的时间。如果到达了,就弹出相应的消息框,并将闹钟时间重置为 `DateTime.MinValue`,以避免重复弹出消息框。
请注意,此代码仅供参考,您可能需要根据您的具体需求进行修改和完善。
阅读全文