C#:小工具项目-闹钟的实现

0.思路

主要是用TimeSpan记录闹钟时间和现在的时间的差值,如果小于0则证明闹钟到了。

1.代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace AlarmClockTest {

    
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
            MyInitial();
        }

        private void MyInitial() {
            //1秒定时
            this.timer1.Interval = 1000;
            this.timer1.Enabled = true;
            //界面初始化
            this.nowTime.Text = DateTime.Now.ToString();
            this.selectHours.SelectedIndex = 0;
            this.selectMiniuts.SelectedIndex = 0;
        }

        bool isSatrt = false; //闹钟是否开始
        DateTime dt; //闹钟时间
        private void TimeStart_Click(object sender, EventArgs e) {
            if (!isSatrt) {//点开始
                this.TimeStart.Text = "停止结束";
                int hours = Convert.ToInt32(this.selectHours.SelectedItem.ToString());
                int miniuts = Convert.ToInt32(this.selectMiniuts.SelectedItem.ToString());
                dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, hours, miniuts, 0);
                isSatrt = true;
            }
            else {//点结束
                this.haveTime.Text = "------";
                this.TimeStart.Text = "闹钟开始";
                isSatrt = false;
            }
        }

        private void timer1_Tick(object sender, EventArgs e) {
            DateTime nt = DateTime.Now;
            this.nowTime.Text = nt.ToString();
            if (isSatrt) {//做判断,闹钟响
                TimeSpan ts = dt - nt; //相差的时间
                if (ts.TotalSeconds < 0) {
                    this.TimeStart.PerformClick();
                    MessageBox.Show("闹钟响");//ToDo
                    //添加引用-COM-MediaPlayer
                    MediaPlayer.MediaPlayer mp = new MediaPlayer.MediaPlayer();
                    mp.FileName = @"C:\Users\Administrator\Music\Go.mp3";
                    mp.Play();
                }
                else {
                    int ch = ts.Hours;
                    int cm = ts.Minutes;
                    int cs = ts.Seconds;
                    //剩余时间
                    this.haveTime.Text = ch + " 小时 " + cm + " 分钟 " + cs + " 秒 ";
                }
            }
        }


    }


}

注意:由于代码中使用的是 Form.Timer 而不是 Threading.Timer,所以触发事件是在UI线程,不用切换线程即可进行UI操作。

还有就是闹钟到了之后,会播放音乐,代码中只是一个例子,更多的音乐播放,请参考如下:

https://www.cnblogs.com/xibei666/p/4586767.html

https://blog.csdn.net/ds1130071727/article/details/48342501

最终界面如下:

完!

猜你喜欢

转载自blog.csdn.net/qq_38261174/article/details/85601645
今日推荐