栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

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

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#使用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
    /// 
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// 
    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#程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/125614.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号