程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 用VisualC#.net完成一個時間提醒器

用VisualC#.net完成一個時間提醒器

編輯:C#入門知識

有些人一用起電腦就會忘記時間,所以我就想做一個小工具,能實現鬧鐘的功能。

  首先,要設計用戶界面,要簡介易用,所以不必太多的東西,要兩個TextBox,兩個Button,還有幾個用來顯示文字提示Lable,的就可以了!
  
  把控件安排好以後,就可以編寫代碼了。其中一個TextBox(代碼中的textBox1)是要輸入時間到了以後要顯示的提示信息。另一個TextBox則是設置時間的(代碼中的textBox2)。設置時間的TextBox的格式是“00:00:00”,所以要有很多限定,比如只能輸入數字,而且其中的兩個冒號不能被修改。一下我就設計了SimpleTextBox類,來限制時間的輸入。SimpleTextBox類代碼如下:
  
  文件:SimpleTextBox.cs
  
  usingSystem;
  
  usingSystem.Collections;
  
  usingSystem.ComponentModel;
  
  usingSystem.Drawing;
  
  usingSystem.Data;
  
  usingSystem.Windows.Forms;
  
  namespaceSimpleTextBox
  
  {
  
  publicclassSimpleTextBox:System.Windows.Forms.TextBox
  
  {
  
  privatestringm_format;//設定時間的顯示格式
  
  privatecharm_inpChar;//缺省的字符
  
  publicSimpleTextBox()

  {

  base.Multiline=false;
  
  base.MaxLength=8;
  
  m_inpChar=0;
  
  m_format="00:00:00";
  
  }
  
  privateboolIsValidChar(charinput)
  
  {
  
  return(char.IsDigit(input));//檢查是否為數字
  
  }
  
  file://重載TextBox的onKeyPress方法
  
  protectedoverridevoidonKeyPress(KeyPressEventArgse)
  
  {
  
  intstrt=base.SelectionStart;
  
  intlen=base.SelectionLength;
  
  intp;
  
  file://處理Backspace鍵->用缺省字符代替刪除後的地方
  
  if(e.KeyChar==0x08)
  
  {
  
  strings=base.Text;
  
  p=Prev(strt);
  
  if(p!=strt)
  
  {


  base.Text=s.Substring(0,p)+m_inpChar.ToString()+s.Substring(p+1);
  
  base.SelectionStart=p;
  
  base.SelectionLength=1;
  
  }
  
  e.Handled=true;
  
  return;
  
  }
  
  file://初始顯示
  
  if(m_format[strt]!=m_inpChar)
  
  {
  
  strt=Next(-1);
  
  len=1;
  
  }
  
  file://接受鍵盤的輸入
  
  if(IsValidChar(e.KeyChar))
  
  {
  
  stringt="";
  
  t=base.Text.Substring(0,strt);
  
  t+=e.KeyChar.ToString();
  
  if(strt+len!=base.MaxLength)
  
  {
  
  t+=m_format.Substring(strt+1,len-1);
  
  t+=base.Text.Substring(strt+len);
  
  }

  else
  
  t+=m_format.Substring(strt+1);
  
  base.Text=t;
  
  file://下一個輸入字符
  
  strt=Next(strt);

  base.SelectionStart=strt;
  
  file://m_caret=strt;
  
  base.SelectionLength=1;
  
  }
  
  e.Handled=true;
  
  }
  
  file://將光標向前檢測
  
  privateintPrev(intstartPos)
  
  {
  
  intstrt=startPos;
  
  intret=strt;
  
  while(strt>0)
  
  {
  
  strt--;
  
  if(m_format[strt]==m_inpChar)
  
  returnstrt;
  
  }
  
  returnret;
  
  }


  file://將光標向後檢測,返回下一個字符的位置
  
  privateintNext(intstartPos)
  
  {
  
  intstrt=startPos;
  
  intret=strt;
  
  while(strt   
  {
  
  strt++;
  
  if(m_format[strt]==m_inpChar)
  
  returnstrt;
  
  }
  
  returnret;
  
  }
  
  file://重載onMouseUp事件
  
  protectedoverridevoidonMouseUp(MouseEventArgse)
  
  {
  
  intstrt=base.SelectionStart;
  
  intorig=strt;
  
  intlen=base.SelectionLength;
  
  file://重設定開始位置
  
  if(strt==base.MaxLength||m_format[strt]!=m_inpChar)
  
  {
  
  file://resetstart
  
  if(Next(strt)==strt)
  
  strt=Prev(strt);
  
  else
  
  strt=Next(strt);
  
  base.SelectionStart=strt;

  } 
  
  file://重設定選定長度
  
  if(len<1)

  base.SelectionLength=1;
  
  elseif(m_format[orig+len-1]!=m_inpChar)
  
  {
  
  len+=Next(strt+len)-(strt+len);
  
  base.SelectionLengthlen;
  
  }
  
  base.onMouseUp(e);
  
  }
  
  }
  
  }
  
  可以將這個類編譯為一個控件,以後可以繼續使用。
  
  下面是TimerAlarm類,這個類使用了一個Timer類來進行計時,並在時間到的時候發出提示。代碼如下:
  
  usingSystem;
  
  usingSystem.Windows.Forms;
  
  usingSystem.Threading;
  
  usingSystem.Timers;

  publicclassTimerAlarm
  
  {


  privateintclockTime=0;
  
  privateintalarmTime=0;
  
  privatestringmessage="時間到了";
  
  privateSystem.Timers.TimertimerClock=newSystem.Timers.Timer();

  publicintAlarmTime

  {

  set
  
  {
  
  alarmTime=value;
  
  }
  
  }
  
  publicintClockTime
  
  {
  
  set
  
  {
  
  clockTime=value;
  
  }
  
  }
  
  publicstringMessage
  
  {
  
  set
  
  {
  
  message=value;
  
  }
  
  }
  
  
  
  publicintCountdown
  
  {
  
  get
  
  {
  
  returnalarmTime-clockTime;
  
  }
  
  }
  
  publicTimerAlarm()
  
  {
  
  file://MessageBox.Show("TimeAlarmstart.");
  
  timerClock.Elapsed+=newElapsedEventHandler(OnTimer);
  
  timerClock.Interval=1000;
  
  timerClock.Enabled=true;
  
  }
  
  publicvoidOnTimer(Objectsource,ElapsedEventArgse)
  
  {
  
  try
  
  {
  
  clockTime++;
  
  if(clockTime==alarmTime)
  
  {
  
  MessageBox.Show(message,"時間到了",MessageBoxButtons.OK,MessageBoxIcon.Warning);
  
  }
    
  }


  catch(Exceptionex)
  
  {
  
  MessageBox.Show("OnTimer():"+ex.Message);
  
    }

    }
  
  publicvoidStopTimer()
  
  {
  
  timerClock.Enabled=false;
  
  }
  
  }
  
  然後用了FormatConvert類,它提供了兩個靜態的方法,inputToSeconds()將一個string型的時間字串轉換成一共有多少秒。
  
  publicstaticintinputToSeconds(stringtimerInput)
  
  {
  
  string[]timeArray=newstring[3];
  
  intminutes=0;
  
  inthours=0;
  
  intseconds=0;
  
  intoccurence=0;
  
  intlength=0;
  
  inttotalTime=0;
  
  occurence=timerInput.LastIndexOf(":");
  
  length=timerInput.Length;
  
  file://Checkforinvalidinput
  
  if(occurence==-1||length!=8)
  
  {
  
  MessageBox.Show("Inval

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved