C#使用timer实现的简单闹钟程序

 更新时间:2015年03月31日 09:56:27   作者:songguo  
这篇文章主要介绍了C#使用timer实现的简单闹钟程序,涉及timer控件的使用及音频文件的操作技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了C#使用timer实现的简单闹钟程序。分享给大家供大家参考。具体如下:

当我在电脑上工作,我经常会被一些东西吸引,比如某宝,结果三个小时过去了我都完全没有注意到。所以我通过C#做了一个简单闹钟程序,这个小程序主要使用C# Timer对象,让用户设定一个倒计时的时长,如果时间到了,就播放一个wav音频文件(也就是闹铃)。

我一直试图保持这个timer的简单性,但我还是添加了一些额外的功能,在状态栏中显示一个通知图标。
通过这个小应用你也可以了解到C#中timer定时器的一些简单用法。

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Threading;
using System.Timers;
using System.IO;
using System.Reflection;
namespace timerAlarm
{
  public class TimerForm : System.Windows.Forms.Form
  {
    //Controls and Components
    private System.Windows.Forms.TextBox timerInput;
    private System.Windows.Forms.Button StartButton;
    private System.Windows.Forms.Button ResetButton;
    private System.ComponentModel.IContainer components;
    //Timer and associated variables
    private System.Timers.Timer timerClock = new System.Timers.Timer();
    private int clockTime = 0;
    private int alarmTime = 0;
    public TimerForm()
    {
      InitializeComponent();
      InitializeTimer();
    }
    protected override void Dispose( bool disposing )
    {
      if( disposing )
      {
        if (components != null)
        {
          components.Dispose();
        }
      }
      base.Dispose( disposing );
    }
    #region Windows Form Designer generated code
    /// <SUMMARY>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </SUMMARY>
    private void InitializeComponent()
    {
      this.components = new System.ComponentModel.Container();
      System.Resources.ResourceManager resources = new System.
        Resources.ResourceManager(typeof(TimerForm));
      this.timerInput = new System.Windows.Forms.TextBox();
      this.StartButton = new System.Windows.Forms.Button();
      this.ResetButton = new System.Windows.Forms.Button();
      this.SuspendLayout();
      //
      // timerInput
      //
      this.timerInput.Location = new System.Drawing.Point(12, 13);
      this.timerInput.Name = "timerInput";
      this.timerInput.Size = new System.Drawing.Size(50, 20);
      this.timerInput.TabIndex = 0;
      this.timerInput.Text = "00:00:00";
      //
      // StartButton
      //
      this.StartButton.FlatStyle = System.Windows.Forms.
        FlatStyle.System;
      this.StartButton.Location = new System.Drawing.Point(75, 11);
      this.StartButton.Name = "StartButton";
      this.StartButton.TabIndex = 1;
      this.StartButton.Text = "Start";
      this.StartButton.Click += new System.EventHandler
        (this.StartButton_Click);
      //
      // ResetButton
      //
      this.ResetButton.FlatStyle = System.Windows.Forms.
        FlatStyle.System;
      this.ResetButton.Location = new System.Drawing.Point(161, 11);
      this.ResetButton.Name = "ResetButton";
      this.ResetButton.TabIndex = 2;
      this.ResetButton.Text = "Reset";
      this.ResetButton.Click += new
        System.EventHandler(this.ResetButton_Click);
      //
      // TimerForm
      //
      this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
      this.ClientSize = new System.Drawing.Size(247, 46);
      this.Controls.AddRange(new System.Windows.Forms.Control[] {
         this.ResetButton,
         this.StartButton,
         this.timerInput});
      this.FormBorderStyle = System.Windows.Forms.
        FormBorderStyle.FixedSingle;
      this.Icon = ((System.Drawing.Icon)(resources.
        GetObject("$this.Icon")));
      this.MaximizeBox = false;
      this.Name = "TimerForm";
      this.StartPosition = System.Windows.Forms.
        FormStartPosition.CenterScreen;
      this.Text = "Alarm Timer";
      this.Resize += new System.EventHandler(this.
        TimerForm_Resized);
      this.ResumeLayout(false);
    }
    #endregion
    public void InitializeTimer()
    {
      this.timerClock.Elapsed += new ElapsedEventHandler(OnTimer);
      this.timerClock.Interval = 1000;
      this.timerClock.Enabled = true;
    }
    [STAThread]
    static void Main()
    {
      Application.Run(new TimerForm());
    }
    private void TimerForm_Resized(object sender, System.EventArgs e)
    {
      if( this.WindowState == FormWindowState.Minimized )
      {
        this.Hide();
      }
    }
    private void StartButton_Click(object sender, System.EventArgs e)
    {
      this.clockTime = 0;
      inputToSeconds( this.timerInput.Text );
    }
    private void ResetButton_Click(object sender, System.EventArgs e)
    {
      try
      {
        this.clockTime = 0;
        this.alarmTime = 0;
        this.timerInput.Text = "00:00:00";
      }
      catch( Exception ex )
      {
        MessageBox.Show("ResetButton_Click(): " + ex.Message );
      }
    }
    public void OnTimer(Object source, ElapsedEventArgs e)
    {
      try
      {
        this.clockTime++;
        int countdown = this.alarmTime - this.clockTime ;
        if( this.alarmTime != 0 )
        {
          this.timerInput.Text = secondsToTime(countdown);
        }
        //Sound Alarm
        if( this.clockTime == this.alarmTime )
        {
          MessageBox.Show("Play Sound");
        }
      }
      catch( Exception ex )
      {
        MessageBox.Show("OnTimer(): " + ex.Message );
      }    
    }
    private void inputToSeconds( string timerInput )
    {
      try
      {
        string[] timeArray = new string[3];
        int minutes = 0;
        int hours = 0;
        int seconds = 0;
        int occurence = 0;
        int length = 0;
        occurence = timerInput.LastIndexOf(":");
        length = timerInput.Length;
        //Check for invalid input
        if( occurence == -1 || length != 8 )
        {
          MessageBox.Show("Invalid Time Format.");
          ResetButton_Click( null, null );
        }
        else
        {
          timeArray = timerInput.Split(':');
          seconds = Convert.ToInt32( timeArray[2] );
          minutes = Convert.ToInt32( timeArray[1] );
          hours = Convert.ToInt32( timeArray[0] );
          this.alarmTime += seconds;
          this.alarmTime += minutes*60;
          this.alarmTime += (hours*60)*60;
        }
      }
      catch( Exception e )
      {
        MessageBox.Show("inputToSeconds(): " + e.Message );
      }
    }
    public string secondsToTime( int seconds )
    {
      int minutes = 0;
      int hours = 0;
      while( seconds >= 60 )
      {
        minutes += 1;
        seconds -= 60;
      }
      while( minutes >= 60 )
      {
        hours += 1;
        minutes -= 60;
      }
      string strHours = hours.ToString();
      string strMinutes = minutes.ToString();
      string strSeconds = seconds.ToString();
      if( strHours.Length < 2 )
        strHours = "0" + strHours;
      if( strMinutes.Length < 2 )
        strMinutes = "0" + strMinutes;
      if( strSeconds.Length < 2 )
        strSeconds = "0" + strSeconds;
      return strHours + ":" + strMinutes + ":" + strSeconds;
    }
  }
}

完整实例代码点击此处本站下载

希望本文所述对大家的C#程序设计有所帮助。

相关文章

  • asp.net之生成验证码的方法集锦(一)

    asp.net之生成验证码的方法集锦(一)

    现在很多网站都有注册登录的页面,为了更好的满足用户体验和网站的安全性,很多网站都采用动态生成的图形码或者是附加码进行验证,这篇文章主要就是介绍生成验证码的方法,需要的朋友可以参考下
    2015-08-08
  • C#网络编程之Socket编程

    C#网络编程之Socket编程

    本文详细讲解了C#网络编程的Socket编程,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • 一道关于C#参数传递的面试题分析

    一道关于C#参数传递的面试题分析

    这篇文章主要介绍了一道关于C#参数传递的面试题,实例分析了C#参数传递的相关使用技巧,需要的朋友可以参考下
    2015-05-05
  • c# 如何实现不同进程之间的通信

    c# 如何实现不同进程之间的通信

    这篇文章主要介绍了c# 如何实现不同进程之间的通信,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下
    2020-11-11
  • C#中关于double.ToString()的用法

    C#中关于double.ToString()的用法

    这篇文章主要介绍了C#中关于double.ToString()的用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • C#使用WebClient登录网站并抓取登录后的网页信息实现方法

    C#使用WebClient登录网站并抓取登录后的网页信息实现方法

    这篇文章主要介绍了C#使用WebClient登录网站并抓取登录后的网页信息实现方法,涉及C#基于会话操作登陆网页及页面读取相关操作技巧,需要的朋友可以参考下
    2017-05-05
  • C#调用SQL语句时乘号的用法

    C#调用SQL语句时乘号的用法

    这篇文章主要介绍了C#调用SQL语句时乘号的用法,可避免因符号引起的程序错误,是C#程序设计人员有必要掌握的,需要的朋友可以参考下
    2014-08-08
  • C#基于基姆拉尔森算法计算指定日期是星期几的方法

    C#基于基姆拉尔森算法计算指定日期是星期几的方法

    这篇文章主要介绍了C#基于基姆拉尔森算法计算指定日期是星期几的方法,实例分析了基姆拉尔森算法的原理与使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • C#基础语法:方法参数详解

    C#基础语法:方法参数详解

    这篇文章主要介绍了C#基础语法:方法参数详解,本文讲解了值参数、引用参数、输出参数、参数数组等参数类型,并分别给出代码实例,需要的朋友可以参考下
    2015-06-06
  • C#二维码图片识别代码

    C#二维码图片识别代码

    这篇文章主要为大家详细介绍了C#二维码图片识别代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05

最新评论