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

实现过程
timer控件刷新当前时间
1 2 |
//命名释义 lav时钟:label(标签) lab时钟.Text = System.DateTime.Now.ToString("yyyy年MM月dd HH时mm分ss秒"); |
直接调用系统的时间获取方法,timer每跳一次将会刷新一次时间(lbl的名字命名错了 汗)
判断三个输入框内输入的是否是数字
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
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 获取或设置与按下的键对应的字符
点击按钮的时候收集当前时间与用户期望的提醒时间
1 2 3 4 5 6 7 8 9 10 11 12 |
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 窗体播放资源中嵌入的声音
1 2 3 4 5 6 |
private void playSoundFromResource() { string egm = "../../Resources/audio.wav";//定义变量来存储音频路径 SoundPlayer bgm = new SoundPlayer(egm);//控制声音播放 bgm.Play();//开始播放音乐 } |
触发声音的条件
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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(); } } |
源码及软件地址: