使用timer控件创建一个简单的报警程序

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

简介:

       当我使用计算机工作时,我总是如此的专心致志,以至于每当我过了一会儿去看时间时,发现已经过了三个小时,而我却完全没有意识到!所以我决定使用我从Code Project学来的C#技术,来创建一个简单的应用程序使用timer 对象来倒计时一个由我自己设定的时间,并一直循环播放一段wave音乐,直到你重设timer控件。

 

timer对象基础

       首先你要知道的是,使用timer对象你需要访问如下命名空间:

using System.Threading;
    
    
using System.timers;
    
    

       接下来,介绍一下创建一个timer的要点以及为这个timer对象的Elapsed事件设定事件委派。

       先创建一个timer对象,这里我定义我使用的timertimerClock接下来设定Elapsed事件委派,当事件被触发时,指定的委派将被调用,这里我定义我使用的委派名称为Ontimer()

       接着,设定Interval属性,使用毫秒数值指示希望Elapsed事件被调用的间隔,这意味着,当我定义Interval属性为1000毫秒时,我定义的委派Ontimer()将每隔1000毫秒被调用一次,或者说是每隔1秒。

       最后,需要设定Enabled属性为true,以使这个timer对象开始工作。接下来,剩下的只是一个小问题创建一个委派,在这个timer对象的Elapsed属性被触发时调用。如果你以前没有使用过委派,不用担心,它们很容易使用,只需要创建一个方法,用来接收适合你捕获事件的一些变量。

       针对Elapsed事件,这个委派需要接收一个普通对象和一个ElapsedEventArgs对象。

private System.timers.timer timerClock = new System.timers.timer();    
        
timerClock.Elapsed += new ElapsedEventHandler(Ontimer);
     
     
timerClock.Interval = 1000;
     
     
timerClock.Enabled = true;
     
     

  
  
   
    
  
  
public void Ontimer( Object source, ElapsedEventArgs e ) 
       
{
  
  
    //Your code here  
       
}
  
  

报警程序中使用timer控件

       好的,介绍了这些基础,现在,我们来看在实际应用中的代码。注意,这里并不包括播放wave音乐和显示最小化图标的代码,完整的代码你可以在那个demo项目中看到,基本上我是直接从jow Blow撰写的《Low level audio players》中粘贴的播放wave的代码。

       在下面的代码中,你可以看到,我将实例化timer对象的方法放在我自己的初始化方法Initializetimer()中,这个方法将被类构造调用。并且我创建了两个方法,inputToSeconds()secondsToTime()用来将字符串格式的时间格式转换为正型,以及一个反处理过程。这些方法只是用来帮助我们在TextBox控件中显示日期格式,这在整个应用的结构中,并不十分重要。其他的那些代码,是标准的Visual Studio.NETWin Form程序生成的样板文件。

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
     
     
       #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
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
     
     
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值