在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → C# 双模式闹钟 实例源码(定时响铃)

C# 双模式闹钟 实例源码(定时响铃)

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:1.61M
  • 下载次数:52
  • 浏览次数:1017
  • 发布时间:2017-01-18
  • 实例类别:C#语言基础
  • 发 布 人:bdhseaside
  • 文件格式:.rar
  • 所需积分:2
 相关标签: 模式 闹钟 音乐

实例介绍

【实例简介】

【实例截图】

【核心代码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Media;
using System.Text.RegularExpressions;

namespace _12Timer加Label加DateTime.Now加播放WAV做闹钟
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 为时钟附初值,为定时闹钟的时分秒赋初值
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            this.label1.Text = "当前时间:"   DateTime.Now.ToString();//年月日时分秒
            //初始化时钟闹铃
            textBox2.Text = DateTime.Now.Hour.ToString();//时
            textBox3.Text = (DateTime.Now.Minute 10).ToString();//分 10分钟后
            textBox4.Text = DateTime.Now.Second.ToString();//秒
            //初始化倒计时秒数
            InitSeconds();
        }
        /// <summary>
        /// 从上面提取的方法 因为多处用 提取一下,提高代码复用性
        /// </summary>
        private void InitSeconds()
        {            
            if (radioButton1.Checked)//选中小时
            {                
                secondCount = Convert.ToInt32(textBox1.Text) * 60 * 60;//加个正则表达式限制必须为数字
                label2.Text = secondCount.ToString()   "秒";
            }
            else if (radioButton2.Checked)
            {
                secondCount = Convert.ToInt32(textBox1.Text) * 60;
                label2.Text = secondCount.ToString()   "秒";
            }
            else if (radioButton3.Checked)
            {
                secondCount = Convert.ToInt32(textBox1.Text);
                label2.Text = secondCount.ToString()   "秒";
            }
            this.textBox1.Focus();
        }
        /// <summary>
        /// 倒计时闹钟
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer1_Tick(object sender, EventArgs e)
        {
            secondCount--;
            if (secondCount < 0)
            {
                this.timer1.Enabled = false;
                this.label2.Text = "倒计时结束啦!!!";//后改剩时分秒加
                //SoundPlayer sp = new SoundPlayer();
                //sp.SoundLocation = @"C:\Documents and Settings\Administrator\桌面\1.wav";
                sp.SoundLocation = @"wav\1.wav";
                sp.Play();
                return;
            }
            else
            {
                //this.label2.Text = secondCount.ToString()   "秒";//Label2为
                this.label2.Text = GetHmsByS(secondCount);
            }
        }
        /// <summary>
        /// 将剩余秒数转换成几小时几分几秒
        /// </summary>
        /// <param name="second"></param>
        /// <returns></returns>
        public static string GetHmsByS(int second)
        {
            int h, m, s;
            h = second / 3600;
            m = (second % 3600) / 60;
            s = second % 60;
            string res = "剩余"   h   "小时"   m   "分钟"   s   "秒";//这里有个隐式转换
            return res;
        }
        /// <summary>
        /// 倒计时启动按钮 启动Timer1控件 倒计时为0响铃
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            if (label2.Text.Trim().ToUpper() == "S")
            {
                MessageBox.Show("未生成有效的倒计时秒数...");
                return;
            }
            else
            {
                if (this.button1.Text == "启动倒计时闹钟")
                {
                    this.button1.Text = "停止倒计时闹钟";
                    this.timer1.Enabled = true;
                }
                else
                {
                    this.button1.Text = "启动倒计时闹钟";                    
                    this.radioButton2.Checked = true;
                    this.textBox1.Text = "10";
                    //this.label2.Text = "S";
                    InitSeconds();
                    this.timer1.Enabled = false;
                    sp.Stop();
                }
            }
        }

        int hour, min, sec;//声明三个字段 类下(此项目下)所有方法调用的 时 分 秒
        /// <summary>
        /// 时钟闹钟启动按钮 启用Timer2控件 用于几点几分几秒响铃
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            if (this.button2.Text == "启动时间闹钟")
            {
                this.button2.Text = "停止时间闹钟";
                this.label10.Text = "计时中...";//为结束提示后加
                hour = Convert.ToInt32(textBox2.Text.Trim());
                min = Convert.ToInt32(textBox3.Text.Trim());
                sec = Convert.ToInt32(textBox4.Text.Trim());
                this.timer2.Enabled = true;
            }
            else
            {
                this.button2.Text = "启动时间闹钟";
                this.label10.Text = "?";//为结束提示后加
                textBox2.Text = DateTime.Now.Hour.ToString();
                textBox3.Text = (DateTime.Now.Minute 10).ToString();
                textBox4.Text = DateTime.Now.Second.ToString();
                this.timer2.Enabled = false;
                sp.Stop();
            }

        }

        SoundPlayer sp = new SoundPlayer();//==================
        /// <summary>
        /// 时间闹钟
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer2_Tick(object sender, EventArgs e)
        {
            if (DateTime.Now.Hour == hour && DateTime.Now.Minute == min && DateTime.Now.Second == sec)
            {
                this.timer2.Enabled = false;
                this.label10.Text = "到时间啦!!!";//为到点结束提示后加
                sp.SoundLocation = @"wav\1.wav";
                sp.Play();
            }
        }
        /// <summary>
        /// Timer3默认就启用 1000毫秒执行一次 用于控制最上面Label1显示的时钟
        /// 而Timer1和Timer2默认是不启用的 由按钮启用 用于控制闹钟
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer3_Tick(object sender, EventArgs e)
        {
            label1.Text = "当前时间:"   DateTime.Now.ToString();
        }

        int secondCount = 0;//声明一个字段(默认private) 用于记录倒计时秒数
        /// <summary>
        /// 设置秒数 并给 倒计时显示的Label2 并为倒计时秒数的私有字段赋初值
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            #region 正则表达式 方式 限制为 数字
            //bool b = Regex.IsMatch(textBox1.Text, @"^(\d )$");//匹配数字
            //if (!b)
            //{
            //    MessageBox.Show("时间设置必须为数字...");
            //    return;
            //} 
            #endregion
            try
            {
                secondCount = Convert.ToInt32(this.textBox1.Text) * 60;
                this.label2.Text = secondCount.ToString()   "秒";
            }
            catch
            {
                MessageBox.Show("输入非法...");
                return;
            }
        }

        /// <summary>
        /// 时
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            if (radioButton1.Checked)
            {
                secondCount = Convert.ToInt32(textBox1.Text) * 60 * 60;
                label2.Text = secondCount.ToString()   "秒";
            }
        }
        /// <summary>
        /// 分
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            if (radioButton2.Checked)
            {
                secondCount = Convert.ToInt32(textBox1.Text) * 60;
                label2.Text = secondCount.ToString()   "秒";
            }
        }
        /// <summary>
        /// 秒
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void radioButton3_CheckedChanged(object sender, EventArgs e)
        {
            if (radioButton3.Checked)
            {
                secondCount = Convert.ToInt32(textBox1.Text);
                label2.Text = secondCount.ToString()   "秒";
            }
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {
            try
            {
                int tmp=Convert.ToInt32(textBox2.Text.Trim());
            }
            catch 
            {
                MessageBox.Show("输入非法...");
                textBox2.Focus();
                return;
            }
        }

        private void textBox3_TextChanged(object sender, EventArgs e)
        {
            try
            {
                int tmp = Convert.ToInt32(textBox3.Text.Trim());
            }
            catch
            {
                MessageBox.Show("输入非法...");
                textBox3.Focus();
                return;                
            }
        }

        private void textBox4_TextChanged(object sender, EventArgs e)
        {
            try
            {
                int tmp = Convert.ToInt32(textBox4.Text.Trim());
            }
            catch
            {
                MessageBox.Show("输入非法...");
                textBox4.Focus();
                return;                
            }
        }
    }
}

//本可推广出定时器似秦一中简...小KS

标签: 模式 闹钟 音乐

实例下载地址

C# 双模式闹钟 实例源码(定时响铃)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警