软件要求
- 使用Timer控件,显示当前时间
- 用户输入需要提醒的时间,经过x小时x分钟x秒后播放声音提醒

实现过程
timer控件刷新当前时间
//命名释义 lav时钟:label(标签)
lab时钟.Text = System.DateTime.Now.ToString("yyyy年MM月dd HH时mm分ss秒");
直接调用系统的时间获取方法,timer每跳一次将会刷新一次时间(lbl的名字命名错了 汗)
判断三个输入框内输入的是否是数字
private void textBox_小时_KeyPress(object sender, KeyPressEventArgs e)
{
int key = e.KeyChar;
if ((key < '0' || key > '9') && (key != 8))
e.Handled = true;
}
private void textBox_分钟_KeyPress(object sender, KeyPressEventArgs e)
{
int key = e.KeyChar;
if ((key < '0' || key > '9') && (key != 8))
e.Handled = true;
}
private void textBox_秒_KeyPress(object sender, KeyPressEventArgs e)
{
int key = e.KeyChar;
if ((key < '0' || key > '9') && (key != 8))
e.Handled = true;
}
TextBox事件解析:
Handled的作用为:获取或设置一个值,该值指示是否处理过KeyPress 事件
- e.Handled = false 表示可以接受该事件
- e.Handled = true 表示已经处理了事件(即不处理当前键盘事件)
- e.KeyChar 获取或设置与按下的键对应的字符
点击按钮的时候收集当前时间与用户期望的提醒时间
private DateTime dt;//全局变量
private void btnset闹钟_Click(object sender, EventArgs e)
{
dt = DateTime.Now;
dt = dt.AddHours(Convert.ToDouble(textBox_小时.Text));
dt = dt.AddMinutes(Convert.ToDouble(textBox_分钟.Text));
dt = dt.AddSeconds(Convert.ToDouble(textBox_秒.Text));
//MessageBox.Show(dt.ToString());
Alarm_clock.Enabled = true;
}
从 Windows 窗体播放资源中嵌入的声音
private void playSoundFromResource()
{
string egm = "../../Resources/audio.wav";//定义变量来存储音频路径
SoundPlayer bgm = new SoundPlayer(egm);//控制声音播放
bgm.Play();//开始播放音乐
}
触发声音的条件
private void Alarm_clock_Tick(object sender, EventArgs e)
{
if (dt.Year == DateTime.Now.Year
&& dt.Month == DateTime.Now.Month
&& dt.Day == DateTime.Now.Day
&& dt.Hour == DateTime.Now.Hour
&& dt.Minute == DateTime.Now.Minute
&& dt.Second == DateTime.Now.Second)
{
playSoundFromResource();
}
}
源码及软件地址: